在AndroidManifest.xml中注册本地BroadcastReceiver?

时间:2014-04-29 12:27:23

标签: android xml broadcastreceiver localbroadcastmanager

无论如何在AndroidManifest.xml中注册BroadcastReceiver并接收由LocalBroadcastManager发送的广播?

目前我必须致电

registerReceiver(BroadcastReceiver receiver, IntentFilter filter) 

注册一个Receiver,在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();
        }

    }
}

1 个答案:

答案 0 :(得分:47)

不,你不能。

本地BroadcastReceiver不是真正的BroadcastReceiver,基本上是callbacks个功能列表。
您可以查看LocalBroadcastManager.java的源代码。