14
我显示了用户的输入法选择器,像这样和选择器弹出的输入法选择器的可视性:如果用户关闭由选择器(例如如何检测无辅助许可
InputMethodManager im = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
im.showInputMethodPicker();
现在点击选择器外部)我想知道,发生了这种情况并执行一些操作(例如显示通知)。
我知道在一个活动中,我可以做检查根布局焦点的肮脏方式,并且我知道,通过Accessibility权限,我可以检查该系统对话框是否被关注。
问题是我正在运行一项服务,我需要检测IME选取器是否显示,即使我不在我的应用程序中(例如第三方应用程序或甚至Android键盘设置)以及我发现Accessibility权限对用户有点混乱,因此我宁愿不诉诸于此并找到一种替代方法。
有没有其他的方法?
我当然希望在使用可访问性API之外,这是不可能的。应用程序不应该以其他方式监视前台用户界面。 – CommonsWare
@CommonsWare另一方面,虽然我们可以很容易地找出哪个应用程序在前台运行。正因为如此,我认为也许有办法。 –
“另一方面,虽然我们可以很容易地找出哪个应用程序正在运行在前台” - 不太容易在5.0+,我正在与谷歌合作,以消除这些隐私和安全缺陷。 – CommonsWare