获取手机中所有能启动的程序信息
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 }