14

我显示了用户的输入法选择器,像这样和选择器弹出的输入法选择器的可视性:如果用户关闭由选择器(例如如何检测无辅助许可

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

im.showInputMethodPicker(); 

现在点击选择器外部)我想知道,发生了这种情况并执行一些操作(例如显示通知)。

我知道在一个活动中,我可以做检查根布局焦点的肮脏方式,并且我知道,通过Accessibility权限,我可以检查该系统对话框是否被关注。

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

有没有其他的方法?

+2

我当然希望在使用可访问性API之外,这是不可能的。应用程序不应该以其他方式监视前台用户界面。 – CommonsWare

+0

@CommonsWare另一方面,虽然我们可以很容易地找出哪个应用程序在前台运行。正因为如此,我认为也许有办法。 –

+0

“另一方面,虽然我们可以很容易地找出哪个应用程序正在运行在前台” - 不太容易在5.0+,我正在与谷歌合作,以消除这些隐私和安全缺陷。 – CommonsWare

回答

0

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

你可以使用xposed来实现,但这需要一个根植设备,我猜这是不讨论的。

这是辅助功能API所要求的功能。你已经说过你不想使用肮脏的方式,所以我建议你只使用这个API。

不应该有一种方法来做到这一点安全问题(而不是afaik)。

相关问题