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 }