Как получить список последних приложений с Android API 21 Lollipop?

70
7

Я создаю домашний пусковой механизм, и я хочу иметь совместимость с Android 5.0, Lollipop. Я хочу получить список последних приложений на панели запуска.


Но так как ActivityManager.getRecentTasks() больше не работает в API 21, как я могу это сделать?

спросил(а) 2014-12-04T03:26:00+03:00 5 лет назад
2
Решение
100

String topPackageName ;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
UsageStatsManager mUsageStatsManager = (UsageStatsManager)getSystemService("usagestats");
long time = System.currentTimeMillis();
// We get usage stats for the last 10 seconds
List<UsageStats> stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000*10, time);
// Sort the stats by the last time used
if(stats != null) {
SortedMap<Long,UsageStats> mySortedMap = new TreeMap<Long,UsageStats>();
for (UsageStats usageStats : stats) {
mySortedMap.put(usageStats.getLastTimeUsed(),usageStats);
}
if(mySortedMap != null && !mySortedMap.isEmpty()) {
topPackageName = mySortedMap.get(mySortedMap.lastKey()).getPackageName();
}
}
}

Используя UsageStatsManager, вы можете получить имена запущенных пакетов переднего плана.

Источник: Как получить недавние задания на Android "L" ?

ответил(а) 2014-12-04T04:20:00+03:00 5 лет назад
Еще 1 ответ
33

Я был обеспокоен тем, что, поскольку андроид не одобрил некоторые api, такие как getRecentTasks, getRunningTasks выше API21, они говорят, что этот метод больше не доступен стороннему приложению. Когда я вызываю эти api на устройстве выше lollipop, он просто возвращает null или мое приложение: (.


Затем я нашел метод вместо этих api, пока мы можем получить packagename приложения, мы можем делать почти все, что захотим. Android основан на Linux, я нашел это AndroidProcesses. Он может использовать /proc для получения приложений Android pid и processName, и processName является таким ad com.xxx.xxx:remote. Обратите внимание, что перед : является имя пакета:)

После получения packagename, я думаю, вы знаете, что делать. Я думаю, мы можем запустить Service для статистики самого последнего используемого приложения в соответствии с фоновым процессом. Чем дольше статистическое время, тем точнее результаты.

ответил(а) 2016-12-09T05:35:00+03:00 2 года, 12 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема