我编写了一个IME,它显示一些弹出窗口,并在用户单击Back时关闭它们。它的工作99%的时间,但一些应用程序(如浏览器)能够拦截KeyEvent.KEYCODE_BACK
之前我的IME,让我的弹出窗口卡住打开。
根据文档InputMethodService应该在Activity之前接收关键事件。我已经用一个Activity测试过了,效果如预期。
我检查了浏览器源代码,它简单地覆盖了Activity.onKeyDown()
和onKeyUp()
,它应该在 InputMethodService.onKeyDown()
和onKeyUp()
之后接收事件。
为什么浏览器接收关键事件的顺序不对?请帮助,因为我不想要添加丑陋关闭按钮到我所有的弹出窗口!!
提前感谢,
巴里其Activity.onBackPressed()。当你覆盖这个按钮的功能时要小心,因为如果你做了一些意想不到的事情,或者完全忽略了后退按钮,它会产生非常负面的用户体验。
如果你正在使用AlertDialogs或类似的弹出窗口,你可能不需要覆盖的功能,只需setCancelable(true)。触摸屏幕和后退键将关闭对话框。