Получить значки приложений для текущих запущенных задач в Android

1

Я успешно получил значки приложений из установленных приложений со следующим фрагментом:

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){}
Теги:
task

3 ответа

3
Лучший ответ

Вы можете использовать ActivityManager.getRunningTasks() чтобы получить список запущенных задач. В этом списке будет RunningTaskInfo, который содержит имя baseActivity, которое является ComponentName.

Из этого вы можете сделать что-то вроде:

PackageManager pm = context.getPackageManager();
ApplicationInfo appInfo = pm.getApplicationInfo(componentName.getPackageName(), 0);
... // rest of the code as you previously did..
  • 0
    Есть ли для меня простой способ получить задачи, которые были запущены пользователем, вроде того, что показывал бы убийца задач? Смотрите мое редактирование выше ...
  • 0
    Попробуйте взглянуть на документы ActivityManager ( developer.android.com/reference/android/app/… ), есть несколько способов, которые могут вам помочь. Как getRecentTasks (), getRunningAppProcesses (), ...
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

После этого будет легко получить значок!

  • 0
    Разве это не неправильно: ApplicationInfo appInfo = list.get (randInt1); ? Список содержит RunningTaskInfo, который не является подклассом ApplicationInfo ...
  • 0
    Есть ли для меня простой способ получить задачи, которые были запущены пользователем, вроде того, что показывал бы убийца задач? Смотрите мое редактирование выше ...
0
Drawable icon = getPackageManager().getApplicationIcon("com.example.testnotification");
imageView.setImageDrawable(icon);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню