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

时间:2015-04-30 11:08:37

标签: android android-activity service dialog android-input-method

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

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

im.showInputMethodPicker();

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

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

问题是我正在运行一项服务而且我需要检测IME选择器是否显示,即使我不在我的应用程序中(例如第三方应用程序甚至是Android键盘设置)我也是发现Accessibility权限对用户来说有点混乱,因此我宁愿不诉诸于此并找到替代方法。

还有另一种方法吗?

1 个答案:

答案 0 :(得分:0)

这应该是评论,但我还不能发表评论。

你可以使用xposed来实现这一点,但这需要一个有根设备,我想这是讨论之外的事。

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

出于安全方面的考虑,不应该有办法解决这个问题(并不是一件好事)。