我在 AccessibilityService
中添加了一个 onKeyEvent()
。我知道当按键按下时(在我的例子中是音量按钮),onKeyEvent()
被调用两次,一次用于 ACTION_DOWN,一次用于 ACTION_UP。
当用户提供辅助功能权限并打开我的应用程序时,一切正常。
然后用户终止了我的应用程序,这次当我按下音量按钮时 onKeyEvent()
调用了 4 次(2 次 ACTION_DOWN 和 2 次 ACTION_UP)。
然后用户打开我的应用,然后从最近的应用中杀死它。这一次
onKeyEvent()
被调用 6 次(3 次 ACTION_DOWN 和 3 次 ACTION_UP)
这样下去
我没有在 onAccessibilityEvent()
和 onDestory()
中做任何事情。
根据@Mike M 的建议,我已更改为 onServiceConnected,但我仍然面临同样的错误
在 onServiceConnected()
中我这样做:
info.flags=AccessibilityServiceInfo.FLAG_REQUEST_FILTER_KEY_EVENTS;
info.flags=AccessibilityServiceInfo.FLAG_REPORT_VIEW_IDS;
setServiceInfo(info);
这是我的 onKeyEvent()
@Override
public boolean onKeyEvent(KeyEvent event) {
Log.v("accessibilityservice","inside onKeyEvent")
int action = event.getAction();
int keyCode = event.getKeyCode();
if (action == KeyEvent.ACTION_UP) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
Log.d("Hello", "KeyUp");
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
Log.d("Hello", "KeyDown");
}
return true;
} else {
return super.onKeyEvent(event);
}
}
我该如何解决?
最佳答案
为什么不尝试检测服务/应用程序是否已在 OnServiceConnected
事件或一些更长的生命周期中注册?
关于android - accessibilityService 中的 onKeyEvent() 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57703757/