Android - 为两个意图注册广播接收器?

Don*_*rty 7 android intentfilter broadcastreceiver android-intent

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

我的代码如下:

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));
Run Code Online (Sandbox Code Playgroud)

我每次发送它时都会获得注册意图,但是当我发送它时,我从未获得UNREGISTERED Intent.

我应该为UNREGISTERED Intent设置另一个广播接收器吗?

Chr*_*Orr 26

不要创建IntentFilter内联,然后使用该addAction方法添加UNREGISTERED操作,即:

IntentFilter filter = new IntentFilter(SIPEngine.SIP_REGISTERED_INTENT);
filter.addAction(SIPEngine.SIP_UNREGISTERED_INTENT);
context.registerReceiver(sipRegistrationListener, filter);
Run Code Online (Sandbox Code Playgroud)

  • Macarse:是的,您只需在<intent-filter>中包含两个<action>标记.Donal:你正在注册的`BroadcastReceiver`是否在你调用`onDestroy()`的同一个`Activity`中处理它?如果是这样,你的BR可能会在广播"意图"到达之前被拆除.否则,我不知道你何时可以发送广播有任何限制 - 而不是我已经从`onDestroy`方法明确地尝试了它... (5认同)
  • 你能用XML做到吗? (2认同)