Обнаружение активности Android

Я искал stackoverflow для этого вопроса и нашел: Android, Detect, когда запускаются другие приложения и надежный способ обнаружения запуска приложения из дома / рабочего стола? , На какие ответы мой вопрос, но этого все еще недостаточно.

Что я хочу сделать Я хочу создать виджет / приложение, которое показывает пользователю устройства список последних приложений и список наиболее популярных приложений.

Проблема. Как получить точные данные о приложениях для создания списка наиболее часто используемых приложений.

Основная информация

  • Я составляю свой собственный код на базе ОС Android (4.2), поэтому у меня есть доступ ко всему.
  • Я также разрабатываю пусковую установку.
  • Он должен передать CTS и быть одобрен Google.
  • Я могу сделать приложение с системными привилегиями.
  • Я знаю, что это может быть проблема безопасности для Google.

Некоторые решения

Последние приложения можно найти через ActityManager, метод getRecentApps, так что теперь проблема там.

Я искал в Интернете для этого и уже нашел следующие решения:

  1. Используйте службу для запроса метода activityManager, getRunningTasks каждые X секунд и создания списка (неточная информация, также использующая много batery).
  2. Используйте logcat, чтобы получить эту информацию (кажется, как взломать меня, нужны системные разрешения)
  3. Измените сам ActivityManager, чтобы предоставить эту информацию (скорее всего, не пройдут тесты CTS)
  4. Используйте пусковую установку для проверки запущенных приложений (пропускает приложения, запущенные в других приложениях)

Что-нибудь еще, что я пропустил?

Заранее спасибо, Tiago Costa

Solutions Collecting From Web of "Обнаружение активности Android"

Последняя версия диалогового окна приложений Android по умолчанию – лучшая ссылка для вас, посмотрите здесь ..check reloadButtons ()

 final ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); final List<ActivityManager.RecentTaskInfo> recentTasks = am.getRecentTasks(MAX_RECENT_TASKS, ActivityManager.RECENT_IGNORE_UNAVAILABLE); 

Вы можете попробовать аналогичным образом.