2012-02-07 10 views
1

私のアプリを実行しているときにユーザーがホームボタンを押したときを知りたいと思います。 BUT: 問題は、既存のコードを編集したくないということです。 意味私は既存のアクティビティにロジックを追加したくありませんonPause()メソッド。開始::テント{行為= android.intent.action ユーザーがホームボタンを押したときにキャッチ

は、私が見つけた唯一の解決策は

HOMEを実行する意図があったかどうかを検出ログに耳を傾けアプリケーションにサービスを追加しました.MAIN cat = [android.intent.category.HOME]

これを行う方法は他にありますか、それとも本当に不可能ですか?

アクションアンドロイド:名= "android.intent.category.HOME"

と実装 最適解は次のように、たManifest.xmlに意図をキャッチすることであっただろうそれをキャッチする新しいクラス。 (しかしそれはそれをキャッチするようではありません)。

+0

この質問の複製はここにあります:http://stackoverflow.com/questions/4101346/android-how-to-catch-that-the-home-button-was-pressed –

答えて

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

1

を使用することができ、私は彼が私のアプリを実行中にユーザーがホームボタンを押したときに知っていただきたいと思います。

特に達成しようとしていることはありますか?

しかし、問題は私が既存のコードを編集したくないということです。

定義上、これは不可能です。

私が見つけた唯一の解決策は、独自の要件に違反し、コードを変更している

を実行する意図があったかどうかを検出ログに耳を傾けアプリケーションにサービスを追加することでした。さらに、本当にあなたが求めてはならない許可が必要です。

他の方法がありますか、それとも本当に不可能ですか?

具体的には何を達成しようとしているかによって異なります。

最適な解決策は、Manifest.xmlのインテントをキャッチし、キャッチする新しいクラスを実装することでした。 (しかしそれはそれをキャッチするようではありません)。

HOMEはカテゴリです。それは行動ではありません。ホーム画面は、HOMEカテゴリのMAINアクションに反応するアクティビティです。しかし、それはあなた自身の要件に違反して、コードを変更しています。

関連する問題