使用setOnKeyListener我能夠偵聽除Home和End按鈕之外的所有物理按鈕,是否有可能捕捉到Home按鈕的動作。主頁按鈕偵聽器
主頁按鈕偵聽器
回答
您不需要捕捉主頁按鈕。如果用戶按Home並且其他一些活動出現在前臺,則您的應用程序將轉到後臺並在您當前的活動中調用onPause()
。你可以重寫該函數來清理搜索字符串或任何你需要的東西。
UPDATE:
更乾淨的解決方案是在開始這一關鍵活動時使用標誌FLAG_ACTIVITY_NO_HISTORY。所以,當你的活動去後臺系統將適當地關閉它。
您想要使用public boolean dispatchKeyEvent(KeyEvent event)
,如下所述:http://developer.android.com/reference/android/app/Activity.html#dispatchKeyEvent%28android.view.KeyEvent%29。
使用它,像這樣:
@Override
public boolean dispatchKeyEvent(KeyEvent event)
{
// do whatever you want to do here, then return true if you handled the key code
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_BACK:
mBackDown = true;
return true;
case KeyEvent.KEYCODE_HOME:
mHomeDown = true;
return true;
}
}
return super.dispatchKeyEvent(event); // let the default handling take care of it
}
讓我知道這是否爲你的作品。
編輯:不知道爲什麼這不適合你,但沒有看透你的代碼的其餘部分,這將很難分辨究竟是怎麼回事。但是,對於您的任務,我建議您使用finishOnTaskLaunch
清單屬性,如http://developer.android.com/guide/topics/manifest/activity-element.html#finish所述:正確使用(將其設置爲true),這將確保如果您的活動重新啓動,它將關閉任何現有實例。
嗨Femi,它仍然不適用於家庭,終端和電源按鈕。 – Vignesh 2011-05-06 07:06:19
奇數:這對我很有用,至少在Home和Back按鈕中有效。我不確定END按鈕:不知道END有一個物理按鈕。另外,對於HOME,您可能需要將您的活動設置爲主屏幕(否則我相信Android會過濾掉該按鍵)。我不認爲你可以捕獲POWER按鈕:在我看來,這將是一個主要的安全問題:有人可能會寫一些拒絕讓你關閉設備的東西。所以你可能在電源按鈕上運氣不好。 – Femi 2011-05-06 13:15:38
嗨Femi,我不需要聽結束按鈕或電源按鈕,我只想聽只有主頁按鈕,我只是告訴你,家庭,結束和權力不工作的聽衆。 – Vignesh 2011-05-09 04:16:51
這是唯一可能的,如果你修改主要的android源代碼。雖然這不建議用於應用程序目的。但更多的隱藏菜單。
public static final int KEYCODE_HOME
Since: API Level 1
Key code constant: Home key. This key is handled by the framework and is never delivered to applications.
Constant Value: 3 (0x00000003)
你可以試試這個在Android 4.0以上版本:
1.註冊一個BroadcastReceiver爲Intent.ACTION_CLOSE_SYSTEM_DIALOGS。
2.調用Intent.getStringExtra(「reason」)來獲取原因。原因如下:
家庭按鍵的「homekey」按下;
「幫助」長按Home鍵;
- 1. 操作欄的onClick偵聽器的主頁按鈕
- 2. Android主頁按鈕監聽器
- 3. 階段偵聽器和命令按鈕
- 4. 在ArrayList中添加按鈕偵聽器
- 5. 準備Onclick()偵聽器的按鈕
- 6. Slick2D GUI按鈕偵聽
- 7. 的Android按鈕偵聽
- 8. 在Android的按鈕偵聽
- 9. Firefox擴展按鈕偵聽
- 10. 按鈕單擊網格佈局中按鈕的偵聽器
- 11. 如何在片段中設置按鈕偵聽器按鈕
- 12. Android使偵聽onClickListener的禁用按鈕
- 13. 偵聽藍牙外設按鈕事件
- 14. 背景中的主頁按鈕監聽器
- 15. 如何添加一個監聽器到主頁按鈕?
- 16. 觸摸偵聽器偵聽邊距
- 17. Android的 - 按鈕偵聽知道哪個按鈕被點擊
- 18. 我在創建按鈕時如何給按鈕動作偵聽器?
- 19. 如何實現動態創建按鈕的偵聽器?
- 20. 在按鈕上實現多個點擊偵聽器
- 21. 在droidparts中清除按鈕單擊偵聽器ClerableEditText
- 22. 複選框來改變按鈕動作偵聽器
- 23. Android自定義按鈕偵聽器沒有被調用
- 24. 如何爲所有按鈕註冊單個事件偵聽器
- 25. 我可以從偵聽器中引用OnClickListener的按鈕嗎? (android)
- 26. kotlin在按鈕上多次點擊偵聽器
- 27. 如何將偵聽器連接到多個單選按鈕?
- 28. 按鈕的onClick作品,但JS事件偵聽器不
- 29. Android中的動態按鈕和動作偵聽器
- 30. 顯示事件偵聽器調用的JavaScript後退按鈕?
我很確定你不能覆蓋Home。你爲什麼想要? – 2011-05-06 05:29:13
在我的應用程序中,我正在閱讀一些不應該被任何第三人訪問的重要文件,如果我正確地退出該應用程序是不可能的,但是當用戶從該活動中按Home時,可以打開該活動搜索。 – Vignesh 2011-05-06 06:42:21
捕捉主頁按鈕的方法無效。您應該遵循活動生命週期並查看用戶按Home按鈕時發生的情況。 – Zelimir 2011-05-06 07:12:22