0

起動完了後にサービスを使用してブロードキャストをリッスンしています。しかし、BroadcastReceiver は、ブートが完了したときに登録されていません。Service の代わりに BroadcastReceiver を使用して起動完了をリッスンすると、機能します。サービスに登録するときはそうではありません。私は何を間違っていますか?コードを以下に示します。

private BroadcastReceiver sim_change;
public void onCreate() {
    // TODO Auto-generated method stub
    super.onCreate();

    IntentFilter filter = new IntentFilter();
    filter.addAction(action);

    sim_change = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "Boradcast Receiver registered successfully", Toast.LENGTH_LONG).show();

        }
    };

    registerReceiver(sim_change, filter);

}@Override
public void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    unregisterReceiver(sim_change);
    Toast.makeText(getApplicationContext(), "Boradcast Receiver unregistered successfully", Toast.LENGTH_LONG).show();

}
4

2 に答える 2

0

再起動するとその登録が削除されるため、BOOT_COMPLETED内から に登録することはできません。Service

から行う必要がありますBroadcastReceiver

機能の有効化/無効化を処理する方法は多数あります。提案された を使用するかsetComponentEnabledSetting()、サービスの開始時に確認できるアプリの共有設定に値を保存するだけです。

于 2013-08-05T08:56:05.230 に答える
0

BOOT_COMPLETEDマニフェストに登録する必要があります。サービスは、登録するために起動時に実行されないため、サービスから登録することは意味がありません。

于 2012-07-02T05:57:03.520 に答える