我将向用户显示这样的输入方法选取器,并弹出选取器:

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

im.showInputMethodPicker();

现在,如果用户解除选取器(例如通过在选取器外部单击),我想知道这一点,然后执行一些操作(例如显示通知)。
我知道在一个活动中,我可以用肮脏的方式检查根布局的焦点,并且我知道,在可访问性权限下,我可以检查该系统对话框是否处于焦点状态。
问题是我正在运行一个服务,我需要检测是否显示了IME选取器,即使我不在我的应用程序中(例如第三方应用程序,甚至Android键盘设置),而且我发现访问权限对用户来说有点混乱,因此我更愿意不要诉诸于此,寻找另一种方法。
有别的办法吗?

最佳答案

这应该是一个评论,但我还不能评论。
您可以使用xposed来实现这一点,但这需要一个根设备,我想这是不可讨论的。
这是可访问性API的目标。你已经说过你不想用这种肮脏的方式,所以我建议你只使用所说的API。
出于安全考虑,不应该有这样的方法(而不是阿法克)。

07-24 09:37