2014-12-11 4 views
3

Я пишу приложение, управляющее доступом к другим приложениям. Пользователь может решить, какое приложение он хочет заблокировать на устройстве. Если кто-то запускает заблокированное приложение, он видит экран, информирующий его о блокаде. У меня есть свой собственный запуск и фоновый процесс, которые проверяют, заблокирована ли в данный момент открытая активность. Чтобы проверить верхнюю активность, я использую имя пакета и класса из ActivityManager getRunningTasks(); Если это приложение заблокировано, я закрываю его собственным представлением, добавляя его в WindowManager. Это работает для каждого приложения, за исключением того, что также использует WindowManager, например, головоломки чата facebook или многозадачность, представленную LG - QSLIDE. Это приложение не сверху. Конечно, я могу найти ее процесс, используя getRunningAppProcesses, но я не могу его убить. Android.os.Process.killprocess также не работают. Я знаю, что это не очень хорошая идея, но у меня нет другой.Как убить чат-голова, как приложение, другое приложение программно?

Есть ли возможность узнать, что какое-то приложение добавило что-то в WindowManager и в конечном итоге заблокировать его? Или просто удалить просмотр или убить приложение?

+0

Я столкнулся с той же проблемой. вы нашли какое-нибудь решение? @Arczi –

+0

По-прежнему ищет ответ :(@waheedakhtar –

+0

Это не просто проблема LG - QSLIDE. В PlayStore так много приложений, которые создадут ту же проблему (Check aircalc). Эти приложения называются плавающими приложениями. Я столкнулся с той же проблемой Я могу заблокировать каждое приложение, ожидающее плавающих приложений. –

ответ

0

Facebook (и многие другие приложения) обращаются к окну с SYSTEM_ALERT, чтобы управлять своими маленькими головами чата. Начиная с написания этого (6.0.1), нет API для прослушивания добавленных представлений и/или сбора любой информации об этом представлении.

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