web-dev-qa-db-ja.com

AndroidManifest.xmlにローカルBroadcastReceiverを登録しますか?

BroadcastReceiverをAndroidManifest.xmlに登録し、LocalBroadcastManagerによって送信されるブロードキャストを受信する方法はありますか?

現在私は電話しなければなりません

registerReceiver(BroadcastReceiver receiver, IntentFilter filter) 

レシーバーを登録するには、AndroidManifest.xmlで宣言しても機能しません。ただし、これは、インテントフィルタだけでなく、レシーバーのパッケージ名とクラス名を正確に知っている必要があることを意味します。マニフェストファイルで受信者を宣言することは可能ですか?

以下は私の現在のコードです。

AndroidManifest.xml:

...
<receiver 
    Android:name="com.example.test.MessageReceiver"
    Android:enabled="true" >
    <intent-filter>
        <action Android:name="com.m2x.test.intent.MESSAGE_RECEIVED" />
    </intent-filter>
</receiver>
...

MainActivity.Java:

Intent intent = new Intent();
intent.setAction("com.m2x.test.intent.MESSAGE_RECEIVED");

LocalBroadcastManager manager = LocalBroadcastManager.getInstance(mContext.get());
manager.sendBroadcast(intent);

MessageReceiver.Java

public class MessageReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        if (intent.getAction().equals("com.m2x.test.intent.MESSAGE_RECEIVED")) {
            Toast.makeText(context, "user message received", Toast.LENGTH_SHORT).show();
        }

    }
}
28
teejoe

いいえ、できません。

ローカルのBroadcastReceiverは実際のBroadcastReceiverではなく、基本的にはcallbacks関数のリストです。
LocalBroadcastManager.Java のソースコードを確認できます。

48
JafarKhQ