2012-09-25 90 views
2

我从我的课的一个发送广播:广播接收器的onReceive不叫

// 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不叫。

任何帮助表示赞赏。

+1

您注册了吗? – nullpotent

+0

是的,编辑我的问题。我错过了包括它 – user1400538

+0

'alaramfilter'它是什么? – nullpotent

回答

3

您的订单sendbroadcastregister是重要的。 首先注册,然后做一个sendBroadcast。

0

注册boardcast

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); 

和unregisterReceiver在破坏methord

unregisterReceiver(receiver_);