gryphone 发表于 2013-2-4 19:24:08

获取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]
查看完整版本: 获取Launcher 启动列表