在activity1中有如下代码
intent = new Intent(Remind.CHECK_REMIND);
intent.putExtra(CHECK_MUSIC_ENABLE, checkMusicEnable);
intent.putExtra(CHECK_VIBRATE, checkVibrateEnable);
intent.putExtra(CHECK_TIME, mCheckTime.getText().toString());
sendBroadcast(intent);
我的BroadcastReceiver的部分代码如下:
public void onReceive(Context context, Intent intent) {、
if(intent.getAction().equals(Remind.CHECK_REMIND)){
Bundle bundle = intent.getExtras();
if(bundle == null){
return;
}
boolean flag = false;
boolean checkMusic = bundle.getBoolean(Setting.CHECK_MUSIC_ENABLE);
// 检查收集设置
if(collectMusic != mCollectMusic){
mCollectMusic = collectMusic;
flag = true;
}
if(collectVibrate != mCollectVibrate){
mCollectVibrate = collectVibrate;
flag = true;
}
if(!mCollectTime.equals(collectTime)){
mCollectTime = collectTime;
flag = true;
}
if(flag){
// 收集设置被改变,需要重新注册
cannelAlarm(context, Remind.COLLECT_REMIND);
registerAlarm(context, Remind.COLLECT_REMIND);
}
}
}
在AndroidManifest.xml中也进行了申明,如下:
<receiver android:name="TestBroadcastReceiver">
<intent-filter>
<action android:name="Remind.CHECK_REMIND" />
</intent-filter>
</receiver>
但我并没有收到广播的intent,这是为什么呢?
还请各位高手帮忙诊断下
谢谢~

解决方案 »

  1.   

    <intent-filter>
    <action android:name="Remind.CHECK_REMIND" />
    </intent-filter>你这个Remind.CHECK_REMIND字符串常量内容也是“Remind.CHECK_REMIND”么?
      

  2.   

    问题已经解决
    是和“android.permission.RECEIVE_BOOT_COMPLETED”发生了冲突。
    去掉这个授权,就能收到相关的intent,但是why?
    授权是写在receive的声明中的,代码如下
    <receiver android:permission="android.permission.RECEIVE_BOOT_COMPLETED" android:name="BootBroadcastReceiver">
      

  3.   

    接收器接受多个广播应该这样写吧
    <intent-filter>
    <action android:name="Remind.CHECK_REMIND" />
    <action android:name="android.permission.RECEIVE_BOOT_COMPLETE" />
    </intent-filter>