0

Я пытаюсь создать приложение, отображающее значок приложения в пользовательском списке, и переключиться на соответствующее приложение, щелкнув значок. Я думаю, что я должен использовать «ActivityManager.RunningTaskinfo», «PackageManager» и «намерение» сделать это , поэтому я пытаюсь .. но я получил ошибку в своем коде .. у меня ошибка на «topActivity« Как можно Я исправляю эту ошибку? и как показать «rtid», который является значок, который я получил от activitymanager и packagemanager в пользовательских ListView, используя такие как «вытяжка [] = изображения нового вытяжки [packs.size()];»Ошибка при попытке запустить значок приложения из ActivityManager.RunningTaskInfo

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); 
+0

Можете ли вы разместить LogCat? IIRC, вам также необходимо получить определенное разрешение на получение списка запущенных задач. Возможно, '

+0

Я не могу запустить приложение из-за неправильного кода «topActivity», я прошу его исправить, и я уже добавил это разрешение на мой манифест – sukso

+0

Основная проблема заключается в том, что вам нужно получить только * one * RunningTaskInfo из «Список» запущенных задач. Таким образом определяется 'topActivity'. –

ответ

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, вам, вероятно, придется create your own custom adapter, что не очень сложно.

+0

Спасибо, что помогли мне! Я уже создал пользовательский массивный адаптер для создания пользовательского списка, и я скоро попробую этот код! – sukso

+0

@sukso Нет проблем! Я попробовал его с помощью «ImageButton», и это сработало. Кроме того, вы должны использовать блок 'try/catch' из-за брошенного исключения. Наконец, если у вас много задач «Запуск», следующий шаг, когда вы получите эту работу, - это использовать «AsyncTask», чтобы вы не задерживали тему пользовательского интерфейса. –