一:显示用的控件是listview 和 baseAdapter 。
二:利用intent-filter过滤,和packageManager调用所有应用。
三:调用指定包名ComponentName方法启动相应应用
MainActivy :
public class MainActivity extends Activity { private ListView listView; private List<ResolveInfo> mApps; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_main); Intent intent = new Intent(Intent.ACTION_MAIN, null); intent.addCategory(Intent.CATEGORY_LAUNCHER); mApps = getPackageManager().queryIntentActivities(intent, 0); listView = (ListView)findViewById(R.id.listView); listView.setAdapter(new MyAdapter(this,mApps)); itemClick(); } public void itemClick(){ listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { ResolveInfo info = mApps.get(position); String packageName = info.activityInfo.packageName; String applicationName = info.activityInfo.name; ComponentName componentName = new ComponentName(packageName, applicationName); Intent intent = new Intent(); intent.setComponent(componentName); startActivity(intent); } }); } }
BaseAdapter:
public class MyAdapter extends BaseAdapter { List<ResolveInfo> apps; Context context; public MyAdapter(Context context , List<ResolveInfo> apps){ super(); this.context = context; this.apps = apps; } public int getCount(){ return apps.size(); } public Object getItem(int position){ return apps.get(position); } public long getItemId(int position) { return position; } public View getView(int position , View contentView , ViewGroup parents){ ViewHolder viewHolder ; if(contentView == null){ viewHolder = new ViewHolder(); contentView = LayoutInflater.from(context).inflate(R.layout.view_listview_item,null); viewHolder.IV_img = (ImageView)contentView.findViewById(R.id.IV_img); viewHolder.TV_packageName = (TextView)contentView.findViewById(R.id.TV_packageName); viewHolder.TV_applciationName = (TextView)contentView.findViewById(R.id.TV_applciationName); contentView.setTag(viewHolder); }else { viewHolder = (ViewHolder) contentView.getTag(); } ResolveInfo appInfo = apps.get(position); viewHolder.IV_img.setBackground(appInfo.activityInfo.loadIcon(context.getPackageManager())); viewHolder.TV_applciationName.setText(appInfo.activityInfo.name); viewHolder.TV_packageName.setText(appInfo.activityInfo.packageName); return contentView; } static class ViewHolder{ public ImageView IV_img; public TextView TV_packageName; public TextView TV_applciationName; } }