2010-02-23 14 views
7

İki amacı almak için bir yayın alıcısını kaydettirmenin mümkün olduğunu mu merak ediyordum? aşağıdaki gibiAndroid - Bir yayın alıcısını iki amaç için kaydettiriyor musunuz?

Benim kodudur:

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

Ben KAYITLI Niyet her şey yollamaya ama onu gönderdikleri zaman KAYITSIZ Niyet asla olsun.

UNREGISTERED Intent için başka bir Broadcast alıcısı kurmalı mıyım?

cevap

25

sizin IntentFilter satır içi oluşturmayın ardından UNREGISTERED eylemi, yani .:

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

eklemek için addAction yöntemi kullanmak yapabilir misin dair bir XML? – Macarse

+0

Bunun için teşekkürler Christopher, şimdi başka bir sorunla karşılaştım, niyetini onDestroy() yönteminden gönderemiyorum, niyet hiç gönderilmiyor. Bu, onDestroy() yönteminin bir kısıtlaması mı yoksa sadece bölümümdeki kötü programlama mı? :) –

+5

Macarse: Evet, iki adet etiketi eklediniz. Donal: 'BroadcastReceiver', bunu, onDestroy()' olarak adlandırdığınız aynı "Etkinlik" ile işlemek için kayıt yaptırıyor mu? Eğer öyleyse, BR'niz "Intent" in yayınına ulaşmadan önce büyük olasılıkla parçalanıyor demektir. Aksi takdirde, yayın gönderebildiğiniz zaman herhangi bir kısıtlamanın farkında değilim - açık bir şekilde bir "onDestroy" yönteminden denedim değil ... –