浏览器(和其他一些应用程序)如何拦截后退键之前我的IME



我编写了一个IME,它显示一些弹出窗口,并在用户单击Back时关闭它们。它的工作99%的时间,但一些应用程序(如浏览器)能够拦截KeyEvent.KEYCODE_BACK之前我的IME,让我的弹出窗口卡住打开。

根据文档InputMethodService应该在Activity之前接收关键事件。我已经用一个Activity测试过了,效果如预期。

我检查了浏览器源代码,它简单地覆盖了Activity.onKeyDown()onKeyUp(),它应该在 InputMethodService.onKeyDown()onKeyUp()之后接收事件

为什么浏览器接收关键事件的顺序不对?请帮助,因为我不想要添加丑陋关闭按钮到我所有的弹出窗口!!

提前感谢,

巴里

其Activity.onBackPressed()。当你覆盖这个按钮的功能时要小心,因为如果你做了一些意想不到的事情,或者完全忽略了后退按钮,它会产生非常负面的用户体验。

如果你正在使用AlertDialogs或类似的弹出窗口,你可能不需要覆盖的功能,只需setCancelable(true)。触摸屏幕和后退键将关闭对话框。

相关内容

  • 没有找到相关文章

最新更新