引用:http://www.iteye.com/topic/696187
获取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;
- }
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return lvalue.size();
- }
- @Override
- public Object getItem(int arg0) {
- // TODO Auto-generated method stub
- return arg0;
- }
- @Override
- public long getItemId(int position) {
- // TODO Auto-generated method stub
- return position;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // TODO Auto-generated method stub
- return 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(){
- @Override
- public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
- long arg3) {
- // TODO Auto-generated method stub
- Intent intent =new Intent(Intent.ACTION_VIEW);
- intent.setComponent(lvalue.get(arg2).component);
- startActivity(intent);
- }
- });
5. emulator 结果结果
- 列出所有application
- 单击Alarm Clock 的情形: