2010-02-23 11 views
7

मैं सोच रहा था कि ब्रॉडकास्ट रिसीवर को दो उद्देश्यों को प्राप्त करना संभव है?एंड्रॉइड - दो उद्देश्यों के लिए प्रसारण रिसीवर पंजीकृत करना?

मेरे कोड इस प्रकार है:

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

मैं पंजीकृत आशय हर मैं इसे भेज लेकिन मैं अपंजीकृत आशय कभी नहीं मिल जब मैं इसे भेजने मिलता है।

क्या मुझे अनगिनत इरादे के लिए एक और प्रसारण रिसीवर स्थापित करना चाहिए?

उत्तर

25

अपने IntentFilter इनलाइन न बनाएं, न तो UNREGISTERED कार्रवाई, यानी .:

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

जोड़ने के लिए addAction विधि का उपयोग आप कर सकते हैं कि एक एक्सएमएल में? – Macarse

+0

क्रिस्टोफर के लिए धन्यवाद, अब मैं एक और समस्या में आया हूं, मैं ऑनस्ट्रोय() विधि से इरादा नहीं भेज सकता, इरादा कभी नहीं भेजा जाता है। क्या यह ऑनस्ट्रोय() विधि या मेरे हिस्से पर बस खराब प्रोग्रामिंग की एक सीमा है? :) –

+5

मैकर: हाँ, आप बस अपने में दो टैग शामिल करें। डोनाल: क्या 'ब्रॉडकास्ट रिसीवर' है जिसे आप उसी 'गतिविधि' में संभालने के लिए पंजीकरण कर रहे हैं जिसमें आप 'onDestroy() 'को कॉल कर रहे हैं? यदि हां, तो ब्रॉड प्रसारण की संभावना से पहले आपके बीआर को तोड़ दिया जा सकता है। अन्यथा, जब आप ब्रॉडकास्ट भेज सकते हैं तो मुझे किसी भी प्रतिबंध के बारे में पता नहीं है - यह नहीं कि मैंने इसे 'ऑनस्ट्रोय' विधि से स्पष्ट रूप से आजमाया है ... –

संबंधित मुद्दे