private List<String> packageNames;
private GridView gv;
private PackageManager pm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
gv = (GridView) findViewById(R.id.gv);
packageNames= new ArrayList<String>();
pm = getPackageManager();
Intent intent = new Intent();
intent.setAction("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
//*******查询出所有手机上具有启动能力的activity*************/
List<ResolveInfo> list = pm.queryIntentActivities(intent, PackageManager.GET_INTENT_FILTERS);
for (ResolveInfo resolveInfo : list) {
int resource = resolveInfo.getIconResource();
// System.out.println("----resource="+resource);
//包名
String packageName = resolveInfo.activityInfo.packageName;
//对应包名开启的意图
Intent i = pm.getLaunchIntentForPackage(packageName);
packageNames.add(packageName);
}
gv.setAdapter(new MyAdapter());
gv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String packagename = packageNames.get(position);
Intent intent = pm.getLaunchIntentForPackage(packagename);
startActivity(intent);
}
});
}
/**
* 可以屏蔽返回键
* @author computer
*
*/
// @Override
// public void onBackPressed() {
// }
private class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return packageNames.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = View.inflate(getApplicationContext(), R.layout.gv_item, null);
TextView tv = (TextView) view.findViewById(R.id.tv);
ImageView iv = (ImageView) view.findViewById(R.id.iv);
String packagename = packageNames.get(position);
try {
tv.setText(pm.getPackageInfo(packagename, 0).applicationInfo.loadLabel(pm));
iv.setImageDrawable(pm.getPackageInfo(packagename, 0).applicationInfo.loadIcon(pm));
} catch (NameNotFoundException e) {
e.printStackTrace();
}
tv.setTextColor(Color.RED);
tv.setTextSize(30);
return view;
}
}