接收的广播接收器没有被叫

时间:2012-09-25 17:37:16

标签: android

我正在从我的一个班级发送广播:

    // Sending broadcast from my db helper constructor
    public DBHelper(Context ctx){
    this.ctx = ctx;
    Intent intent = new Intent();
    intent.setAction("custom.alert.abc");
    intent.putExtra("key",77);ctx.sendBroadcast(intent);




    //registering the broadcast in one of my activities oncreate
     IntentFilter alaramfilter = new IntentFilter();
    alaramfilter.addAction("custom.alert.abc");
     registerReceiver(alarmreceiver, alaramfilter); 

    //and declaring it
    private final BroadcastReceiver alarmreceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
    System.out.println("Broadcast received inside on receive");
    final String action = intent.getAction();
    if(action.equals("custom.alert.abc")) {
        Log.d("CPSnippetMain","My custom broadcast called");
        try {
             System.out.println("Broadcast received");
         } catch (Exception e) {
            e.printStackTrace();
        }
   }
}
};

问题是,虽然调用构造函数并发送广播,但不会调用onreceive。

感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

sendbroadcastregister的顺序非常重要。 首先注册,然后进行sendBroadcast。

答案 1 :(得分:0)

注册电视广播

private BroadcastReceiver receiver_;

@Overrride
public void onCreate(Bundle savedInstanceState){



 IntentFilter filter_data = new IntentFilter();
 filter_data .addAction("SOME_ACTION");


 receiver_= new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
  //do something based on the intent's action
}
 }

 registerReceiver(receiver_, filter_data );

和ondestroy方法中的unregisterReceiver

unregisterReceiver(receiver _p>