2010-02-23 16 views
7

Ich frage mich, ist es möglich, einen Rundfunkempfänger zu registrieren, um zwei Absichten zu erhalten?Android - Registrieren eines Rundfunkempfängers für zwei Absichten?

Mein Code ist wie folgt:

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

Ich erhalte die REGISTERED Intent jedes Mal wenn ich es schicken, aber ich nie die UNREGISTERED Intent, wenn ich es schicken.

Sollte ich einen weiteren Broadcast-Empfänger für die UNREGISTERED Intent einrichten?

Antwort

25

Erstellen Sie nicht Ihre IntentFilter inline, dann verwenden Sie die addAction Methode, um die UNREGISTERED Aktion hinzuzufügen, d.h .:

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

Können Sie tun, dass in einem XML? – Macarse

+0

Danke für diesen Christopher, ich bin jetzt auf ein anderes Problem gestoßen, ich kann nicht scheinen, die Absicht von der onDestroy() Methode zu senden, die Absicht wird nie gesendet. Ist das eine Einschränkung der onDestroy() Methode oder nur eine schlechte Programmierung meinerseits? :) –

+5

Macarse: Ja, Sie haben nur zwei Tags in Ihrem . Donal: Ist der 'BroadcastReceiver', den Sie registrieren, in der gleichen 'Aktivität', in der Sie 'onDestroy()' aufrufen? Wenn das der Fall ist, wird Ihr BR wahrscheinlich abgerissen, bevor die Sendung 'Intent' es erreichen kann. Sonst ist mir keine Einschränkung bekannt, wann man Broadcasts senden kann - nicht, dass ich es explizit von einer 'onDestroy' Methode ausprobiert habe ... –

Verwandte Themen