package org.bbs.apklauncher;
import java.io.File;
import java.io.PrintStream;
import java.lang.Thread.UncaughtExceptionHandler;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.bbs.felix.util.AndroidUtil;
import org.bbs.felix.util.PackageParser;
import org.bbs.felix.util.PackageParser.PackageInfoX;
import org.bbs.felix.util.PackageParser.PackageInfoX.ActivityInfoX;
import org.bbs.felixonandroid.R;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.Adapter;
import android.support.v7.widget.RecyclerView.LayoutManager;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class BackUpActivity extends Activity {
private static final String TAG = BackUpActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_apk_launcher);
RecyclerView recycleView = (RecyclerView) findViewById(R.id.apk_container);
LayoutManager layoutM = new LinearLayoutManager(this);
recycleView.setLayoutManager(layoutM);
Adapter adapter = new ApkAdapter(this, getPackageManager().getInstalledApplications(0));
recycleView.setAdapter(adapter);
;
}
class VH extends RecyclerView.ViewHolder {
public ImageView icon;
public TextView title;
public VH(View itemView) {
super(itemView);
}
}
class ApkAdapter extends RecyclerView.Adapter<VH> {
private List<ApplicationInfo> mApks;
public ApkAdapter(BackUpActivity apkLuncherActivity,
List<ApplicationInfo> list) {
mApks = list;
}
@Override
public int getItemCount() {
return mApks.size();
}
@Override
public void onBindViewHolder(VH arg0, int arg1) {
ApplicationInfo a = mApks.get(arg1);
arg0.title.setText(a.packageName);
arg0.itemView.setTag(a);
}
@Override
public VH onCreateViewHolder(ViewGroup arg0, int arg1) {
VH vh = new VH(View.inflate(getApplicationContext(), R.layout.apk_launcher_item, null));
vh.icon = (ImageView) vh.itemView.findViewById(R.id.icon);
vh.title = (TextView) vh.itemView.findViewById(R.id.title);
vh.itemView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ApplicationInfo a = (ApplicationInfo) v.getTag();
Log.d(TAG, "onClick. activity: " + a);
File apkFile = new File(a.sourceDir);
File DIR = new File("/sdcard/apk");
DIR.mkdirs();
File backupFile = new File(DIR, a.packageName + ".apk");
AndroidUtil.copyFile(apkFile, backupFile);
Toast.makeText(BackUpActivity.this, "scr:" + apkFile + " backFile: " + backupFile, Toast.LENGTH_LONG).show();;
}
});
return vh;
}
}
public static void putExtra(PackageInfoX.ActivityInfoX a,
Intent launcher) {
// launcher.putExtra(StubActivity.EXTRA_APK_PATH, a.mApkPath);
// launcher.putExtra(StubActivity.EXTRA_APPLICATION_CLASS_NAME, a.mPackageClassName);
launcher.putExtra(StubActivity.EXTRA_ACTIVITY_CLASS_NAME, a.name);
// launcher.putExtra(StubActivity.EXTRA_ACTIVITY_THEME, a.theme);
}
}