2012-02-07 66 views
1

我想知道當用戶在運行我的應用程序時按下主頁按鈕。 但是: 問題是我不想編輯現有的代碼。 含義我不想將邏輯添加到現有活動onPause()方法中。當用戶按下主頁按鈕時捕捉

我發現的唯一的解決辦法是將服務添加到其偵聽到日誌檢測是否有運行

HOME意圖應用程序:開始:意向{ACT = android.intent.action 。主要 貓= [android.intent.category.HOME]

是否有任何其他的方式來做到這一點或者是真的不可能? 最佳的解決方案就是趕上意圖在的Manifest.xml,如:

行動機器人:名字= 「android.intent.category.HOME」

和實施新班級來抓住它。 (但它似乎沒有抓住它)。

+0

此問題的副本可在此處找到:http://stackoverflow.com/questions/4101346/android-how-to-catch-that-the-home-button-was-pressed – 2012-02-07 16:39:20

回答

0

您可以使用按鍵事件處理

public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_HOME) { 
      // Home key pressed 
     } else { 
      return super.onKeyDown(keyCode, event); 
     } 
     return false; 
    } 
+1

HOME按鈕未發送到'onKeyDown()'。 – CommonsWare 2012-02-07 17:36:55

1

我想知道當用戶按下home鍵,而他跑我的應用程序。

您試圖達成什麼具體目標?

但問題是我不想編輯現有的代碼。

根據定義,這是不可能的。

我發現的唯一的解決辦法是將服務添加到該監聽記錄檢測是否有運行

即修改代碼,侵犯了自己的需求意向的應用程序。此外,它需要一個真正你不應該要求的許可。

有沒有其他辦法可以做到或者真的不可能?

這取決於你正在努力實現什麼。

最佳的解決方案應該是捕捉Manifest.xml中的意圖......並實現一個新類來捕捉它。 (但它似乎沒有抓住它)。

HOME是一個類別。這不是一個行動。主屏幕是對HOME類別中的MAIN操作做出響應的活動。但是,它正在修改代碼,違反了您自己的要求。

相關問題