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();
}
}
}
いいえ、できません。
ローカルのBroadcastReceiver
は実際のBroadcastReceiver
ではなく、基本的にはcallbacks
関数のリストです。
LocalBroadcastManager.Java のソースコードを確認できます。