即使自定义的动作匹配,活动也无法使用意图过滤器和自定义广播接收器接收意图

时间:2013-06-19 22:47:12

标签: android android-intent broadcastreceiver

在课程中,我想向我的活动发送意图:

Intent broadcast = new Intent();
broadcast.setAction("coinchutc.ANNONCE");
Log.d("JoueurAgent", "Sending broadcast " + broadcast.getAction());
context.sendBroadcast(broadcast);

日志可以正确打印信息。

在我的Activity类中,我声明了一个自定义的广播接收器:

myReceiver = new MyReceiver();

MyReceiver类是这样的:

private class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("PartieActivity", "receive");
        String action = intent.getAction();

        if (action.equalsIgnoreCase("coinchutc.ANNONCE")) {
            Log.d("PartieActivity", "Receive " + action);
            annoncer();
        }
    }
}

我在类的onCreate()方法中注册了我的活动:

IntentFilter annonceFilter = new IntentFilter();
annonceFilter.addAction("coinchutc.ANNONCE");
registerReceiver(myReceiver, annonceFilter);

但是登录MyReceiver类根本不会打印任何内容。

有谁知道为什么会这样? 提前谢谢!

2 个答案:

答案 0 :(得分:1)

你有这个Manifest吗?

    <receiver android:name="xxx.MyReceiver">
        <intent-filter>
            <action android:name="coinchutc.ANNONCE" />
        </intent-filter>
    </receiver>

答案 1 :(得分:0)

我也遇到过这样的问题。我试图改变动作名称,然后接收者可以接收意图。我不知道为什么,但你可以尝试一下。