package org.iilab.pb.fragment; import android.app.Activity; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.DisplayMetrics; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.GridView; import android.widget.Toast; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import org.iilab.pb.R; import org.iilab.pb.WizardActivity; import org.iilab.pb.adapter.AppInfoAdapter; import org.iilab.pb.common.ApplicationSettings; import org.iilab.pb.data.PBDatabase; import org.iilab.pb.model.AppInfo; import org.iilab.pb.model.Page; /** * Created by aoe on 1/16/14. */ public class WizardTestDisguiseOpenFragment extends Fragment { private static final String PAGE_ID = "page_id"; private HashMap<String, Drawable> mImageCache = new HashMap<String, Drawable>(); private Activity activity; DisplayMetrics metrics; List<AppInfo> appList; GridView gvAppList; Page currentPage; public static WizardTestDisguiseOpenFragment newInstance(String pageId) { WizardTestDisguiseOpenFragment f = new WizardTestDisguiseOpenFragment(); Bundle args = new Bundle(); args.putString(PAGE_ID, pageId); f.setArguments(args); return (f); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_type_interactive_disguise_test_open, container, false); gvAppList = (GridView) view.findViewById(R.id.gv_app_list); gvAppList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { AppInfo selectedAppInfo = (AppInfo) parent.getItemAtPosition(position); if (selectedAppInfo.getPackageName().equals(activity.getPackageName())) { String pageId = currentPage.getSuccessId(); Intent i = new Intent(activity, WizardActivity.class); i.putExtra("page_id", pageId); activity.startActivity(i); activity.finish(); } else { Toast.makeText(activity, "Please press the Panic Button app icon.", Toast.LENGTH_SHORT).show(); } } }); return view; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); activity = getActivity(); if (activity != null) { metrics = new DisplayMetrics(); activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); final PackageManager pm = activity.getPackageManager(); List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA); appList = new ArrayList<AppInfo>(); int otherPackageCount = 0; for (ApplicationInfo packageInfo : packages) { String packageName = packageInfo.packageName; if (otherPackageCount < 15 && (packageName.startsWith("com.android.") || packageName.startsWith(" com.google.android."))) { try { ApplicationInfo app = pm.getApplicationInfo(packageName, 0); String appName = pm.getApplicationLabel(app).toString(); if (appName != null && !appName.equals(packageName)) { appList.add(new AppInfo(appName, packageName)); otherPackageCount++; } } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } } else if (packageName.equals(activity.getPackageName())) { appList.add(new AppInfo(activity.getString(R.string.app_name), packageName)); } } gvAppList.setAdapter(new AppInfoAdapter(activity, appList)); String pageId = getArguments().getString(PAGE_ID); String selectedLang = ApplicationSettings.getSelectedLanguage(activity); PBDatabase dbInstance = new PBDatabase(activity); dbInstance.open(); currentPage = dbInstance.retrievePage(pageId, selectedLang); dbInstance.close(); } } @Override public void onPause() { super.onPause(); Log.e(">>>>>", "onPause WizardTestDisguiseOpenFragment"); } @Override public void onResume() { super.onResume(); Log.e(">>>>>", "onResume WizardTestDisguiseOpenFragment"); } }