我正在向用户显示输入方法选择器,并且弹出选择器:
InputMethodManager im = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
im.showInputMethodPicker();
现在,如果用户取消选择器(例如通过在选择器外部点击),我想知道,发生了这种情况并做了一些操作(比如显示通知)。
我知道在一个Activity中我可以用脏方式检查根布局的焦点,我知道使用Accessibility权限我可以检查系统对话框是否有焦点。
问题是我正在运行一项服务而且我需要检测IME选择器是否显示,即使我不在我的应用程序中(例如第三方应用程序甚至是Android键盘设置)我也是发现Accessibility权限对用户来说有点混乱,因此我宁愿不诉诸于此并找到替代方法。
还有另一种方法吗?
答案 0 :(得分:0)
这应该是评论,但我还不能发表评论。
你可以使用xposed
来实现这一点,但这需要一个有根设备,我想这是讨论之外的事。
这是可访问性API的用途。你已经说过你不想使用肮脏的方式,所以我建议你只使用所说的api。
出于安全方面的考虑,不应该有办法解决这个问题(并不是一件好事)。