1

プログラムでレシーバーを使用して HOME ボタンの押下を処理するアクティビティが必要ですが、イベントが発生していません。ただし、manifest.xml アクティビティ セクションで宣言すると、このインテント フィルターを正常に登録してキャプチャできます。動作していない受信機のコードは次のとおりです。

BroadcastReceiver br;

br = new BroadcastReceiver() {
       @Override
       public void onReceive(Context context, Intent intent) {
               return;  // I put a breakpoint here to see if this gets called
       }
};


IntentFilter intf = new IntentFilter();
intf.addAction(Intent.ACTION_MAIN);
intf.addCategory(Intent.CATEGORY_HOME);
intf.addCategory(Intent.CATEGORY_DEFAULT);

registerReceiver(br, intf);

これがホームボタンのクリックをキャプチャしない理由を誰かが知っていますか?

ちなみに、別のアクティビティを作成し、マニフェストでインテント フィルターを指定することで、この問題を回避しようとしました。マニフェストでアクティビティを enabled="false" に設定しましたが、実行時にそのアクティビティを有効にする方法がわかりませんでした。要するに、アプリケーションが実行されているときにのみ、アプリケーションのホーム ボタン インテント フィルターを登録したいのですが、その方法がわかりません。

4

2 に答える 2

3

代わりのホーム画面を実装しようとしている場合は、Intentフィルターをマニフェストに含める必要があります。SDK のホーム サンプル アプリを参照してください。

HOME キーをブロックしようとしている場合は、ブロックしないでください。

于 2010-02-09T16:10:31.090 に答える
0

ホームボタンを無効にする必要がある場合は決してありません。これは、ユーザーが常に自分の電話を制御できるようにするためです。正確に何をしようとしていますか?アクティビティが表示されなくなったことを検出するには、onStop() をオーバーライドする必要があります。

于 2010-02-09T16:06:22.847 に答える