2015-04-26 1 views
2

Я видел много сообщений о видимости клавиатуры в Android. НО, мне нужно запустить одну Сервис, когда любое приложение открывает клавиатуру (Messaging, Viber, WhatsApp и т. Д.), И, поскольку я понял другие сообщения, это можно обнаружить, только если клавиатура была запущена моим приложением, а не каким-либо другим приложением.Начать обслуживание, когда клавиатура видна - Android

Как я могу достичь стартовой службы, если ЛЮБОЕ приложение запустило клавиатуру?

Надеюсь, вы меня поняли. Пожалуйста, имейте терпение, потому что я только начал программировать на Android.

EDIT:

мне нужно, чтобы быть в состоянии сделать это без корневого доступа, или с действиями некоторых осложненных Пользователя. Это будет использовать многие пользователи, поэтому он должен быть гибким и простым (на их стороне).

+0

Невозможно сделать это. Если вы сами не являетесь клавиатурой, конечно (клавиатура - это Сервис). –

ответ

0

Поскольку вы будете составлять все приложения, вам нужно будет обратиться к системным ресурсам, чтобы получить состояние.

Вам необходимо открыть оболочку в вашей программе через exec() и запустить эту команду: dumpsys window InputMethod | grep "mHasSurface", вытащил из этого (очень недооцененный) ответ: Shell command for keyboard state. Он также содержит интересную ссылку о том, как разрешить команду для вашего приложения на ненагруженных устройствах.

Обратитесь к этому S/O по различным способам запуска exec(): Android Java execute shell. Если у вас есть root, просто скопируйте то, что у них есть. Если нет, измените свой код на exec() вместо exec('su') и попробуете взломать ответ OP, или b) подпишите приложение с помощью системного ключа.

Надеюсь, это поможет!

+0

Я отредактировал свой ответ (добавил некоторые ограничения). AaronGillion, можете ли вы объяснить мне более подробно варианты A и B? – Aleksandar

+0

@Aleksandar пользователь должен быть укоренен. Извините за поздний комментарий –