在发广播时加入Intent.FLAG_RECEIVER_REGISTERED_ONLY
Intent i=new Intent("spdif_cable_status");
i.setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
context.sendBroadcast(i);
然后在AndroidMainfest.xml文件中注册
     <receiver android:name=".SpdifReciver" android:enabled="true" >
      <intent-filter>
              <action android:name="spdif_cable_status" />
              <category android:name="android.intent.category.default" />
          </intent-filter>
     </receiver>
结果收不到广播,这个是为什么,在AndroidMainfest.xml文件中注册不算注册吗

解决方案 »

  1.   

    这个知道,我就是奇怪,
    有没有办法使在AndroidMainfest.xml文件中注册的receiver能接收到这样的消息
      

  2.   

    在AndroidManifest.xml中注册是静态注册,通过代码是动态的注册理论上SpdifReciver是收到的,你试下在代码中注册,看能否收到,这是等价的
      

  3.   

    在发送的时候设置了FLAG_RECEIVER_REGISTERED_ONLY标志,如果是,那么这个Intent将只发送给已经注册的 Receiver,不会发送给Broadcast receiver,否则就发送给所有的那些满足条件的receivers
      

  4.   

     <action android:name="spdif_cable_status" />这个action,action启动广播时,肯定要设置action
    Intent i=new Intent();
    i.setAction("spdif_cable_status");
    context.sendBroadcast(i);
    试试
      

  5.   

    构造函数里面已经设置action了。这种状态下应该只有动态注册的receiver能接受到吧。