我的班级没有收到广播

时间:2014-09-29 01:05:49

标签: java android broadcastreceiver android-broadcast

我使用以下内容广播我的MainActivity onCreate中的意图:

Intent i = new Intent(this, MyNewReceiver.class);
sendBroadcast(i);

这是我的接收器类:

public class MyNewReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("OK", "RECEIVED");
    }

}

我没有收到任何错误,但我也没有收到Log

我知道这不是BroadcastReceiver的真正含义,但在这种情况下,我需要手动触发一次。

1 个答案:

答案 0 :(得分:0)

显式意图(指定目标类的Intent)并不意味着触发BroadcastReceivers,而是使用IntentFilters通过implcit意图接收意图。这样做的原因是整个广播机制的目的是能够发送事件而不知道谁会听他们。

http://developer.android.com/guide/components/intents-filters.html#Receiving

实现这一目标的方法是:

首先在清单中声明你的BroadcastReceiver以及它所禁止听的动作。 这里有一个如何做到的例子:

<receiver android:name="your.package.MyNewReceiver" >
    <intent-filter>
        <action android:name="your.action.string" />
    </intent-filter>
</receiver>

动作字符串可以是您喜欢的任何字符串,但使用您自己的应用程序包在java包样式中选择一些内容通常是个好主意。

最后以这种方式发送指定动作字符串的意图:

Intent intent = new Intent("your.action.string");
sendBroadcast(intent);

希望它有所帮助。