0

アクションのためにプログラムでレシーバーを登録しようとしていましたandroid.intent.action.BOOT_COMPLETED。つまり、クラスを拡張するBootReceiverという名前のレシーバークラスを持ってみましょうBroadCastReceiver

私のアクティビティクラスの1つで、このコードを書きました。

IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("android.intent.action.BOOT_COMPLETED");
        intentFilter.addAction("android.intent.action.PACKAGE_REPLACED");

        BootReceiver receiver = new BootReceiver();
        getApplicationContext().registerReceiver(receiver, intentFilter);

アプリの更新と同じブロードキャストレシーバーへの boot_completed アクションの両方を実行しようとしていました。

私が試したのは、上記のコードを登録してアクティビティを実行し、デバイスを再起動したことです。BootReceiver メソッドへのコールバックを取得していませんでしonReceive()た。

boot_completed アクションのレシーバーをプログラムで宣言することは可能ですか、それともマニフェスト ファイルでレシーバーを宣言する必要がありますか。

実際、私の要件は、プログラムで宣言することです。

前もって感謝します。

4

1 に答える 1

5

actionandroid.intent.action.BOOT_COMPLETED のプログラムでレシーバーを登録しようとしていました

が呼び出されるまでに、起動が行われてからかなり時間registerReceiver()が経っています。登録する唯一の場所android.intent.action.BOOT_COMPLETEDはマニフェストです。これは、プロセスが実行されていない場合でもブロードキャストへの関心を登録できるためです。

boot_completed アクションのレシーバーをプログラムで宣言することは可能ですか?

いいえ、リクエストすることはできますが、決して機能しません。

マニフェスト ファイルで受信者を宣言する必要がありますか

機能させたい場合は、はい。

于 2014-12-15T19:10:25.207 に答える