获取android中当前正在运行的任务的应用程序图标

时间:2012-03-25 21:04:21

标签: java android task

我使用以下代码段成功获得了当前安装的应用程序的应用程序图标:

List<ApplicationInfo> list = pm.getInstalledApplications(PackageManager.GET_ACTIVITIES);

    for (int i=0; i< list.size(); i++)
    {
        randInt1 = new Random().nextInt(list.size());

        ApplicationInfo appInfo = list.get(randInt1);
        packageName = appInfo.packageName;
        appLabel = (String) pm.getApplicationLabel(appInfo);
        icon = pm.getApplicationIcon(appInfo);

        System.out.println("Icon ==> " +icon);

    }

如何返回当前正在运行的任务的图标而不仅仅是已安装的应用程序?


好的,这就是我最终做的事情,它似乎正在运行,但有没有办法只检索用户启动的任务,就像任务杀手会返回而不是休眠的系统进程?他们可以按类别过滤吗?目标是为用户最近启动的当前正在运行的任务之一返回一个随机应用程序图标,如果有帮助的话。

int ii=0;

      List< ActivityManager.RunningTaskInfo> Runningtasks= mgr.getRunningTasks(30);
      for(ii=0;ii<Runningtasks.size();ii++)
      {

         randInt1 = new Random().nextInt(Runningtasks.size());

          ComponentName comName=Runningtasks.get(randInt1).topActivity;
          packageName = comName.getPackageName();
          //String Classname = comName.getClassName();



          System.out.println("icon====> "+icon);
          System.out.println("packageName====> "+packageName);

         // Toast toast1 = Toast.makeText(pm, packageName, LONG);
         // toast1.show();
      }


      try{
          icon = pm.getApplicationIcon(packageName);
          }catch(Exception e){}

3 个答案:

答案 0 :(得分:3)

您可以使用ActivityManager.getRunningTasks()获取正在运行的tasks列表。该列表将包含RunningTaskInfo,其中包含字段名称baseActivity,它是ComponentName。

从那以后你可以做类似的事情:

PackageManager pm = context.getPackageManager();
ApplicationInfo appInfo = pm.getApplicationInfo(componentName.getPackageName(), 0);
... // rest of the code as you previously did..

答案 1 :(得分:1)

List<ActivityManager.RunningTaskInfo> list = activityManager.getRunningTasks(30); 

    randInt1 = new Random().nextInt(list.size());

    ApplicationInfo appInfo = list.get(randInt1);
    packageName = appInfo.packageName;
    appLabel = (String) pm.getApplicationLabel(appInfo);
    icon = pm.getApplicationIcon(appInfo);

    System.out.println("Icon ==> " +icon);
  

ActivityManager.RunningTaskInfo

     

课程概述

     

您可以检索有关系统中当前“正在运行”的特定任务的信息。请注意,正在运行的任务不会   意味着给定的任务实际上有一个它正在运行的过程;   它只是意味着用户已经去过它而从未关闭它,但是   目前该系统可能已经杀死了它的进程并且只是持有   到用户的最后状态,以便在用户返回时重新启动它。

http://developer.android.com/reference/android/app/ActivityManager.RunningTaskInfo.html

之后,这将很容易获得图标!

答案 2 :(得分:0)

Drawable icon = getPackageManager().getApplicationIcon("com.example.testnotification");
imageView.setImageDrawable(icon);