Отловить появление AlertDialog в другом приложении

Рейтинг: 3Ответов: 1Опубликовано: 28.11.2014

Здравствуйте! Есть чужое приложение, которое в некоторый момент выводит AlertDialog.
Вопрос: как можно отловить появление этого диалога в своём приложении?
Допускается использование всех прелестей root+busybox.
Заранее спасибо!

Ответы

▲ 3

Я бы покопался в исходниках WindowManagerService.

В грубом приближении:

  1. Пишем сервис, который мониторит стек активити через ActivityManager.getRunningTasks() и при появлении нужного приложения делает "стойку".
  2. Далее каким-то образом надо получить инстанс WindowServiceManager (без понятия, как) и ждем появления в стеке окошек AlertDialog. До списка окошек можно достучаться через рефлексию, например, вызовом WindowServiceManager.dumpWindows().

Такие вот наводки - по крайней мере я бы копал в этом направлении.

Update
Это вы называете хардкором? Да это так, детские шалости. Менее хардкорно можно попробовать половить логи, правда, начиная с JB (4.1) логи видны без пермишена только руту - так что может оказаться это более хардкорным.