2010.06.04日志:关于android正在运行程序的关闭问题

来源:互联网 发布:win7装linux双系统 编辑:程序博客网 时间:2024/04/29 23:31

从网上搜到的线索:

下面的代码利用Intent.CATEGORY_LAUNCHER,可以取得表示在Launcher中的所有App信息
可是如何取得正在运行状态的App信息呢?在intent里面没找到对应的定义。
希望高手指教,谢谢

  1. 1:  PackageManager manager=getPackageManager();
    2:   Intent intent=new Intent(Intent.ACTION_MAIN,null);
    3:   
    4:   //在Launcher中的所有App信息--》 apps
    5:   intent.addCategory(Intent.CATEGORY_LAUNCHER);  
    6:   List<ResolveInfo> apps=manager.queryIntentActivities(intent,0);
    7:   Collections.sort(apps,new ResolveInfo.DisplayNameComparator(manager));

    2.关于开机运行的程序的获得:

    线索:

    getPackageManager().queryIntent***()可以指定Intent查循所有的Activity,其他组件类似!

  1. 思考:要想让一个Activity或BroadcastReceiver在开机时启动运行,要在项目的Androidmanifest.xml中的<intent-filter>中写上<action android:name = “android.intent.action.BOOT_COMPLETED”>

所以要可以这样处理来获得开机运行的程序:

 1:  public List fetch_installed_apps() {
 2:          PackageManager packageManager = getPackageManager();
 3:   
 4:          Intent intent = new Intent(Intent.ACTION_BOOT_COMPLETED,null);//开机启动的intent
 5:          List<ResolveInfo> appsList = packageManager.queryIntentActivities(intent, 0);//搜索开机启动的intent的Activity
 6:  //        List<ResolveInfo> appsList = packageManager.queryBroadcastReceivers(intent, 0);//搜索开机启动的intent的BroadcastReceivers
 7:          list = new ArrayList<Map<String, Object>>(appsList.size());
 8:          Log.d("TAG", appsList.size()+"");
 9:          Iterator<ResolveInfo> l = appsList.iterator();
10:   
11:          while (l.hasNext()) {
12:              Map<String, Object> map = new HashMap<String, Object>();
13:              ResolveInfo app = (ResolveInfo) l.next();
14:              String packageName = app.activityInfo.packageName;// 包名
15:              String appDir = app.activityInfo.labelRes+"";// 程序的路径
16:              File appFile = new File(appDir);// 由路径创建一个File
17:              String fileSize = appFile.length() + "";// 当前程序的大小
18:              String label = "";
19:              try {
20:  //                label = getPackageManager().getApplicationLabel(app).toString();// Label
21:  //                PackageInfo pInfo = getPackageManager().getPackageInfo(
22:  //                        packageName, MODE_APPEND);
23:                  // versioncode =pInfo.versionCode+"";//版本号
24:  //                versionName = pInfo.versionName + "";// 版本名
25:              } catch (Exception e) {
26:                  Log.i("Exception", e.toString());
27:              }
28:              map = new HashMap<String, Object>();
29:              map.put("name", packageName);
30:              map.put("desc", appDir);
31:              // map.put("img", getPackageManager().getActivityIcon(g));
32:              list.add(map);
33:          }
34:          return list;
35:      }