プログラムでレシーバーを使用して 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" に設定しましたが、実行時にそのアクティビティを有効にする方法がわかりませんでした。要するに、アプリケーションが実行されているときにのみ、アプリケーションのホーム ボタン インテント フィルターを登録したいのですが、その方法がわかりません。