2014-09-25 63 views
0

我有模擬按鍵作爲這樣的輸入方法:模擬的Android的KeyEvent - 聚焦

ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, event)); 
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, event)); 

利用該方法我可以打開使用KeyEvent.KEYCODE_MENU設備上的菜單。完成此操作後,我嘗試發送KeyEvent.KEYCODE_DPAD_UPKeyEvent.KEYCODE_DPAD_DOWN以瀏覽菜單,但焦點仍在後臺的活動中。因此,例如,當我在啓動器中時,我打開菜單,但當按下或向下時,設備正在瀏覽主屏幕上的應用程序,而不是菜單中的選項。

我重複了與硬件鍵盤相同的步驟,然後焦點跳轉到預期的菜單,所以我覺得這應該也能夠模擬。

回答

0

您的keyevent附加到您的應用程序的主要活動。我能想到的一種方式是,只要用戶在鍵盤上輸入,就會向該活動註冊回調。該活動將檢查菜單是否被調出(這可以通過標誌來完成)。如果是,它將更新菜單中選擇的位置。

+0

我不認爲關鍵事件是附加到我的主要活動。我的主要活動甚至沒有開始。關鍵事件是從擴展InputMethodService的服務發送的。我希望能夠瀏覽整個系統的菜單和對話框,而不僅僅是在我的活動中。 – 2014-09-26 07:22:20