2010-02-16 5 views
1

Возможно ли каким-либо образом прослушивать события ActivityManager, например. когда начинаются действия? Передаёт ли ActivityManager трансляции? Я ничего не обнаружил, что это так.Слушайте события ActivityManager?

Что мне в основном нужно сделать: я хочу, чтобы мое приложение запускало один из моих действий всякий раз, когда определенное (третье лицо) приложение запускается/фокусируется. Проблема заключается в том, что это должно произойти до того, как приложение thirdparty будет фактически отображаться.

То, что я пытался до сих пор, как обходные: выход

  1. LogCat: я запрашиваю LogCat каждый 0.8s (фильтруется, чтобы показать только ActivityManager события), но это съедает до многих RESSOURCES
  2. getRunningTasks: Замедляет телефон слишком много и не очень безопасен, поскольку деятельность может работать, но не в настоящее время в фокусе

Любые идеи?

+0

Вы могли бы прокомментировать, почему ваше приложение должно запускаться перед определенным третьим сторонним приложением? – dparnas

+0

Мое приложение запрашивает пароль, прежде чем пользователь сможет запустить приложение thirdparty. – ChristianS

ответ

0

Я полагаю, что нет на самом деле другого устаревшего способа справиться с glabal состояния системы, только

(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); 

ActivityManager.getRecentTasks() - возвращает список задач, которые в настоящее время работают с последними из которых являются первым и старше по порядку.

Подробности проверить docs

Возможно, хотя Android является Linux вы можете запустить системные инструменты, такие как

Runtime.getRuntime().exec("ps -aux | grep smth") 

Но я думаю, что было бы трудно обнаружить конкретное приложение Java.

0

Я смотрел в источнике Android, но, похоже, не было каких-либо событий.

https://android.googlesource.com/platform/packages/providers/ApplicationsProvider

+0

Как вы думаете, можно ли обновить Activitylauncher.java таким образом, чтобы он транслировал и заменял его на устройство пользователя (для пользователей root явно)? Думаю, это не сработает из-за цифровой подписи ПЗУ. – ChristianS

0

Я думаю, что вы можете использовать режим запуска, чтобы определить, какие действия для запуска на высший уровень. Пожалуйста, проверьте вопрос: Android singleTask or singleInstance launch mode?. Может быть, это поможет вам.

Смежные вопросы