Как получить пакетное имя runtask на Android M5.1.1
Я новичок в Android, и я пытаюсь сделать проект, который позволяет пользователю видеть, какие приложения работают. Я использовал этот код, чтобы получить имя пакета запущенной задачи сверху:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { List<ActivityManager.RunningAppProcessInfo> runningappInfo = activityManager.getRunningAppProcesses(); for (ActivityManager.RunningAppProcessInfo app : runningappInfo) { if (app.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND && app.importanceReasonCode == 0) { Integer state = null; try { state = field.getInt(app); } catch (IllegalAccessException e) { e.printStackTrace(); } if (state != null && state == PROCESS_STATE_TOP) { currentInfo = app; break; } } } if (currentInfo != null) { current = currentInfo.processName.split(":")[0]; } }else{ List<ActivityManager.RunningTaskInfo> runningTaskInfos = activityManager.getRunningTasks(1); ComponentName componentInfo = runningTaskInfos.get(0).topActivity; current = componentInfo.getPackageName(); }
current
Вот имя пакета бегущей задачи. Но этот код больше не работал после того, как Google обновил новую версию Android Lollipop5.1.1. Метод "getRunningAppProcesses" теперь возвращает нулевой список. Я застрял сейчас, потому что все другие функции в моем проекте работают, только если я могу получить имя пакета бегущей задачи. Если кто-нибудь решил эту проблему, не могли бы вы мне помочь? Большое спасибо,
1 ответ
https://code.google.com/p/android-developer-preview/issues/detail?id=2347
Android предлагает использовать это для поиска лучших приложений. https://developer.android.com/reference/android/app/usage/UsageStatsManager.html