我寫了一個IME,它顯示一些彈出窗口,並在用戶單擊Back時關閉它們。它的工作時間爲99%,但某些應用程序(如瀏覽器)能夠在IME之前攔截KeyEvent.KEYCODE_BACK
,使我的彈出窗口保持打開狀態。瀏覽器(以及其他一些應用程序)如何在IME之前攔截Back鍵?
根據文檔InputMethodService應該在Activity之前接收關鍵事件。我用一個Activity測試了它,它按預期工作。
我檢查瀏覽器的源代碼,它只是簡單地重寫Activity.onKeyDown()
和onKeyUp()
,後InputMethodService.onKeyDown()
和onKeyUp()
應該接收事件。
爲什麼瀏覽器似乎以錯誤的順序接收關鍵事件?請幫忙,因爲我不想爲所有彈出窗口添加醜陋的關閉按鈕!
由於提前,
巴里
你在看什麼瀏覽器?股票AOSP瀏覽器或其他?在一般情況下,有一個'onKeyPreIme'方法可以在IME執行之前接收事件,例如後退鍵。 – adamp
股票瀏覽器和Google搜索。我已經檢查過瀏覽器源代碼(com.android.browser),onKeyPreIme()沒有在任何地方定義過。 :( –