Ошибка при попытке запустить значок приложения из ActivityManager.RunningTaskInfo

Я пытаюсь создать приложение, которое показывает значок запущенного приложения в пользовательском просмотре списка, и переключиться на соответствующее приложение, когда щелкните значок. я думаю, что я должен использовать "ActivityManager.RunningTaskinfo", "PackageManager" и "намерение", чтобы сделать это, поэтому я пытаюсь.. но я получил ошибку в своем коде.. я получил ошибку в "topActivity" Как я могу исправить эту ошибку? и как показать "rtid", который является значком, который я получил от Activitymanager и Packagemanager в настраиваемом просмотре списка, используя, например, "Drawable [] images = new Drawable [packs.size ()];"

ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(100);
ApplicationInfo appInfo = getPackageManager().getApplicationInfo(tasks.topActivity.getPackageName(), 0);
Drawable rtid = getPackageManager().getApplicationIcon(appInfo);

1 ответ

Решение

Я думаю, что вы можете просто это немного.

ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(100);
List <Drawable> applicationDrawables = new ArrayList <Drawable>();
PackageManager pacMgr = getPackageManager();

  for (ActivityManager.RunningTaskInfo runningTask: tasks)
  {
    try {
      applicationDrawables.add (pacMgr.getApplicationIcon(runningTask.topActivity.getPackageName()));
    } catch (NameNotFoundException e) {
      e.printStackTrace();
    }
  }

Ваша главная проблема заключалась в том, что вы пытались получить topActivity для List а не только один RunningTaskInfo пакет.

Что касается отображения Drawables, вам, вероятно, придется создать свой собственный адаптер, что не очень сложно.

Другие вопросы по тегам