2010-02-23 3 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)); 

나는 등록 된 의도 매번 내가 보내하지만 난 그것을 보낼 때 내가 등록되지 않은 의도를 결코 얻을.

UNREGISTERED 인 텐트를 위해 다른 브로드 캐스트 수신기를 설정해야합니까?

답변

25

당신의 IntentFilter 인라인을 생성하지 마십시오, 다음 UNREGISTERED 액션, 즉 :

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

을 추가 addAction 방법을 사용하여 당신이 할 수있는 XML에서? – Macarse

+0

크리스토퍼 주셔서 감사합니다. 이제 다른 문제가 생겼습니다. onDestroy() 메서드에서 의도를 보내지 않는 것 같습니다. 의도는 보내지지 않습니다. onDestroy() 메서드의 제한 사항입니까 아니면 내 부분의 잘못된 프로그래밍입니까? :) –

+5

Macarse : 네, 에 두 개의 태그 만 포함하면됩니다. Donal : 당신이'onDestroy()'를 호출하는 것과 같은'Activity'에 이것을 처리하기 위해 등록하는'BroadcastReceiver'가 있습니까? 그렇다면 브로드 캐스트 인 텐트가 도달하기 전에 BR이 해체 될 가능성이 있습니다. 그렇지 않으면, 나는 브로드 캐스트를 보낼 수있는 시간에 대한 제한을 알지 못한다. 나는 onDestroy 메쏘드에서 그것을 명시 적으로 시도하지는 않았다. ... –

관련 문제