Как определить видимость выбора метода ввода без разрешения доступности

Я показываю пользователю метод выбора метода ввода так, и сборщик всплывает:

InputMethodManager im = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);

im.showInputMethodPicker();

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

Я знаю, что в Activity я могу сделать грязный способ проверки фокуса корневого макета, и я знаю, что с помощью разрешения Accessibility я могу проверить, сфокусирован ли этот системный диалог или нет.

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

Есть ли альтернативный способ?

Ответы

Ответ 1

Это должен быть комментарий, но я не могу комментировать.

Вы можете использовать xposed для достижения этого, но для этого потребуется корневое устройство, и я думаю, что это не обсуждается.

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

Не должно быть способа сделать это для проблем безопасности (и не является афайком).