获取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;
    	}
    	
		@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 的情形:

 

 

 

 

有问题请跟帖  否则 请顶贴  谢谢!

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值