获取手机中所有能启动的程序信息

 1 package com.android.mobilesafe.engine;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 import android.content.Context;
 7 import android.content.Intent;
 8 import android.content.pm.ApplicationInfo;
 9 import android.content.pm.PackageManager;
10 import android.content.pm.ResolveInfo;
11 import android.graphics.drawable.Drawable;
12 
13 import com.android.mobilesafe.domain.TrafficInfo;
14 
15 public class TrafficManagerService {
16 
17     private Context context;
18     private PackageManager pm;
19     
20     public TrafficManagerService(Context context) {
21         // TODO Auto-generated constructor stub
22         this.context = context;
23         pm = context.getPackageManager();
24     }
25     
26     /**
27      * 得到所有能启动的应用
28      * @return
29      */
30     public List<TrafficInfo> getLauncherTrafficInfos(){
31         List<TrafficInfo> trafficInfos = new ArrayList<TrafficInfo>();
32         
33         // 查询所有启动的应用程序
34         Intent intent = new Intent();
35         intent.setAction(Intent.ACTION_MAIN);
36         intent.addCategory(Intent.CATEGORY_LAUNCHER);
37         
38         // ResolveInfo 类似于一个IntentFilter
39         List<ResolveInfo> resolvInfos = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
40         for (ResolveInfo info : resolvInfos) {
41             ApplicationInfo appInfo = info.activityInfo.applicationInfo;
42             Drawable appicon = appInfo.loadIcon(pm);// 获取图标
43             String appname = appInfo.loadLabel(pm).toString();// 程序名称
44             String packageName = appInfo.packageName;// 获取程序包名
45             int uid = appInfo.uid; // 获取程序UID
46             
47             trafficInfos.add(new TrafficInfo(appicon, appname, uid, packageName));
48         }
49         
50         return trafficInfos;
51     }
52 }
原文地址:https://www.cnblogs.com/androidez/p/2933442.html