获取Launcher 启动列表
获取Launcher 启动列表即 列出所有Launcher程序 通过PackageManager 来获取
[代码 步骤]
1. 定义内部类 LauncherItem 用于定义Application相关属性 比如:图标 名称 以及 ComponentName
public class LauncherItem {Drawable icon;String name;ComponentName component;LauncherItem(Drawable d, String s,ComponentName cn){icon = d;name = s;component = cn;}};
2. 定义List<LauncherItem> lvalue 用于存放查询结果
public void addLauncher(){ lvalue = new ArrayList<LauncherItem>(); pkgMgt = this.getPackageManager(); //to query all launcher & load into List<> Intent it = new Intent(Intent.ACTION_MAIN); it.addCategory(Intent.CATEGORY_LAUNCHER); List<ResolveInfo> ra =pkgMgt.queryIntentActivities(it,0); for(int i=0;i<ra.size();i++){ ActivityInfo ai = ra.get(i).activityInfo; //String ainfo = ai.toString(); Drawable icon = ai.loadIcon(pkgMgt); String label = ai.loadLabel(pkgMgt).toString(); ComponentName c = new ComponentName(ai.applicationInfo.packageName,ai.name); LauncherItem item = new LauncherItem(icon,label,c); lvalue.add(item); } }
3. 定义LauncherAdapter 并指定各个item显示样式
public class LauncherAdapter extends BaseAdapter { Activity activity; public LauncherAdapter(Activity a){ activity = a; } @Overridepublic int getCount() {// TODO Auto-generated method stubreturn lvalue.size();}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn arg0;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubreturn composeItem(position);} public View composeItem(int position){ LinearLayout layout = new LinearLayout(activity); layout.setOrientation(LinearLayout.HORIZONTAL); ImageView iv = new ImageView(activity); iv.setImageDrawable(lvalue.get(position).icon); layout.addView(iv); TextView tv = new TextView(activity); tv.setText(lvalue.get(position).name); tv.setPadding(10, 5, 0, 0); layout.addView(tv); return layout; } }
4. 启动某个item 当单击时
adapter = new LauncherAdapter(this); lv.setAdapter(adapter); lv.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO Auto-generated method stubIntent intent =new Intent(Intent.ACTION_VIEW);intent.setComponent(lvalue.get(arg2).component);startActivity(intent);} });
5. emulator 结果结果
- 列出所有application
http://dl.iteye.com/upload/picture/pic/65489/986deeeb-86c7-3926-ab5c-381a152bfa19.png
- 单击Alarm Clock 的情形:
http://dl.iteye.com/upload/picture/pic/65487/4b553897-d462-33c0-bf6d-3f426cbe26a9.png
有问题请跟帖 否则 请顶贴 谢谢!
页:
[1]