2010-02-23 28 views
7

Je me demandais s'il était possible d'enregistrer un récepteur de diffusion pour recevoir deux intentions?Android - Enregistrement d'un récepteur de diffusion pour deux intentions?

Mon code est le suivant:

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

Je reçois ENREGISTRÉS intention chaque fois que je l'envoie, mais je ne reçois jamais l'intention UNREGISTERED quand je l'envoie.

Dois-je configurer un autre récepteur de diffusion pour l'intention NON ENREGISTRÉE?

Répondre

25

Ne pas créer votre IntentFilter en ligne, utilisez la méthode addAction pour ajouter l'action UNREGISTERED, i.e. .:

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

Pouvez-vous faire dans un fichier XML? – Macarse

+0

Merci pour ce Christopher, j'ai maintenant rencontré un autre problème, je ne peux pas sembler envoyer l'intention de la méthode onDestroy(), l'intention n'est jamais envoyée. Est-ce une limitation de la méthode onDestroy() ou juste une mauvaise programmation de ma part? :) –

+5

Macarse: Oui, vous venez d'inclure deux balises dans votre . Donal: Est-ce que le 'BroadcastReceiver' que vous enregistrez pour gérer ceci dans le même' Activity' dans lequel vous appelez 'onDestroy()'? Si c'est le cas, votre BR risque d'être détruit avant que l'émission Intent puisse l'atteindre. Sinon, je ne suis au courant d'aucune restriction sur quand vous pouvez envoyer des diffusions - pas que je l'ai explicitement essayé à partir d'une méthode onDestroy ... –