如何在没有"辅助功能"权限的情况下检测输入法选取器可见性

Aki*_*i K 16 service android dialog android-input-method android-activity

我正在向用户显示输入法选择器,并且弹出选择器:

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

im.showInputMethodPicker();
Run Code Online (Sandbox Code Playgroud)

现在,如果用户解雇了选择器(例如,通过点击选择器外部)我想知道,发生了这种情况并做了一些动作(比如显示通知).

我知道在一个Activity中我可以用脏方法检查根布局的焦点,我知道使用Accessibility权限我可以检查系统对话框是否有焦点.

问题是我正在运行一项服务,我需要检测IME选择器是否显示,即使我不在我的应用程序(例如第三方应用程序,甚至Android键盘设置)中,我也找到了辅助功能许可有点混淆用户因此我宁愿不诉诸于此并找到另一种方式.

还有另一种方法吗?

F43*_*d1r 0

这应该是一条评论,但我还不能评论。

您可以用来xposed实现这一目标,但这需要有 root 权限的设备,我想这不在讨论范围内。

这就是可访问性 API 的用途。你已经说过你不想使用肮脏的方式,所以我建议你只使用所说的 api。

出于安全考虑,不应该有办法做到这一点(据我所知)。