0

少し前に、マニフェストで宣言された 1 つと、アクティビティで宣言されたもう 1 つの 2 つのブロードキャストレシーバーを持つことができました。ここのように: IntentService からのコールバックを処理する最良の方法は何ですか

しかし、LocalBroadcastReceiver を変更し、sendBroadcast メソッドで sendOrderedBroadcast を変更したため、アクティビティに登録されているものだけがブロードキャストを受信して​​いるだけです。localbroadcastreceiver をマニフェストに登録できないことを読みました。

では、アクティビティに登録されていないブロードキャストレシーバーを起動するにはどうすればよいでしょうか?

4

1 に答える 1

0

独自の回答を見つけたので、興味のある方に回答します。

2 つの BroadcastReceiver クラスがあり、1 つはアプリケーションの起動時に使用されます。

ActivityBroadcastReceiver myReceiver = new ActivityBroadcastReceiver();

@Override
protected void onResume() {     
    LocalBroadcastManager.getInstance(this).registerReceiver(myReceiver, new IntentFilter("com.mybroadcast"));
    super.onResume();
}

@Override
protected void onPause() {      
    LocalBroadcastManager.getInstance(this).unregisterReceiver(myReceiver);
    super.onPause();
}

そして私のマニフェストファイルで:

<receiver
        android:name="com.broadcastreceiver.NotificationBroadcastReceiver"
        android:enabled="true" >
        <intent-filter>
            <action android:name="com.mybroadcast" />
        </intent-filter>
    </receiver>

ブロードキャストを送信するには:

if(!LocalBroadcastManager.getInstance(context).sendBroadcast(broadcast))
            context.sendBroadcast(broadcast);               

この context.sendBroadcast() では、誰もが私のブロードキャストを受信できることに同意しますが、私のコードでは、sendBroadcast は無意味なデータのみを送信します。それが今のところ私が得た最良の解決策です。

于 2013-09-04T08:18:11.737 に答える