2010-02-23 108 views
7

我想知道是否可以注册一个广播接收器来接收两个意图?Android - 为两种意图注册广播接收器?

我的代码如下:

sipRegistrationListener = new BroadcastReceiver(){ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     String action = intent.getAction(); 

     if (SIPEngine.SIP_REGISTERED_INTENT.equals(action)){ 
      Log.d("SETTINGS ", "Got REGISTERED action"); 
     } 

     if (SIPEngine.SIP_UNREGISTERED_INTENT.equals(action)){ 
      Log.d("SETTINGS ", "Got UNREGISTERED action"); 
     } 
    } 
}; 

context.registerReceiver(sipRegistrationListener, new IntentFilter(SIPEngine.SIP_REGISTERED_INTENT)); 
context.registerReceiver(sipRegistrationListener, new IntentFilter(SIPEngine.SIP_UNREGISTERED_INTENT)); 

我拿到登记的意图,每次我发,但我从来没有得到过未注册意图时,我把它。

我应该为未注意的目的建立另一个广播接收机吗?

回答

25

不要创建IntentFilter内联,然后使用addAction方法来添加UNREGISTERED行动,即:

IntentFilter filter = new IntentFilter(SIPEngine.SIP_REGISTERED_INTENT); 
filter.addAction(SIPEngine.SIP_UNREGISTERED_INTENT); 
context.registerReceiver(sipRegistrationListener, filter); 
+2

你能做到这一点在XML? – Macarse 2010-02-23 11:22:46

+0

感谢Christopher,我现在遇到了另一个问题,我似乎无法从onDestroy()方法发送意图,意图永远不会被发送。这是onDestroy()方法的局限性还是我的糟糕的编程? :) – 2010-02-23 11:32:42

+5

明细:是的,您只需在您的中包含两个标签。 Donal:你注册的'BroadcastReceiver'是否在你调用'onDestroy()'的同一'Activity'中处理?如果是这样,你的无线电通信可能在广播“意图”能够到达之前被拆除。否则,我不知道什么时候可以发送广播有任何限制 - 并不是我已经明确地尝试过使用'onDestroy'方法... – 2010-02-23 11:50:11