2010-07-06 24 views
6

मैं मुझे बाहर करने में मदद platform.please कैसे प्रसारण रिसीवर और आशय फ़िल्टर android.please में बर्ताव करता है सरल रेखा में या पहले से example.thanks साथ समझाने Android के लिए नया हूँ ...एंड्रॉयड-प्रसारण रिसीवर और आशय फ़िल्टर

+3

यहां देखने के लिए एक अच्छा विचार हो सकता है: http://stackoverflow.com/users/366916/भारती और अपने हाल के प्रश्नों के उत्तर स्वीकार करें। –

उत्तर

17

एक प्रसारण रिसीवर अपने Android परियोजना में एक वर्ग है जो सभी उद्देश्यों, जो android.content.ContextWreapper.sendBroadcast(Intent intent)

का उपयोग कर आप गतिविधि receicving की मैनिफ़ेस्ट फ़ाइल में से अन्य गतिविधियों द्वारा भेजे जाते हैं प्राप्त करने के लिए जिम्मेदार है, तो आप घोषित करने के लिए जो अपने प्रसारण रिसीवर है कक्षा, उदाहरण के लिए:

<receiver android:name="xyz.games.pacman.network.MessageListener"> 
    <intent-filter> 
    <action android:name="xyz.games.pacman.controller.BROADCAST" /> 
    </intent-filter> 
</receiver> 

जैसा कि आप देख सकते हैं, आप यहां इरादे फ़िल्टर को भी परिभाषित करते हैं, यानी ब्रॉडकास रिसीवर द्वारा कौन सा इरादा प्राप्त किया जाना चाहिए।

फिर आपको ब्रॉडकास्ट रिसीवर को विस्तारित करने वाली कक्षा को परिभाषित करना होगा। इस वर्ग आपने मैनिफ़ेस्ट फ़ाइल में परिभाषित किया गया है:

public class MessageListener extends BroadcastReceiver { 


    /* (non-Javadoc) 
    * @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent) 
    */ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
... 
} 

यहाँ, सभी उद्देश्यों जो फिल्टर के माध्यम से पारित कर रहे हैं प्राप्त कर रहे हैं और आप पैरामीटर विधि कॉल में पारित का उपयोग कर उन तक पहुँच सकते हैं।

+0

xyz.games.pacman.controller.BROADCAST क्या संदर्भित करता है? यह स्पष्ट नहीं है ... –

+0

यह केवल वह पैकेज है जिसका उपयोग उन्होंने उदाहरण के रूप में किया था – Bilthon

8

एक ब्रॉडकास्ट रिसीवर दो तरीकों से पंजीकृत किया जा सकता है: dynamic या static। नया BroadcastReceiver कक्षा पंजीकृत करने के लिए AndroidManifest.xml में intent-filter के माध्यम से स्टेटिक घोषित करने के अलावा कुछ भी नहीं है। गतिशील रिसीवर को दूसरे वर्ग के भीतर से पंजीकृत कर रहा है। एक intent-filter निर्धारित करता है कि कौन सी कार्रवाई प्राप्त की जानी चाहिए।

ब्रॉडकास्ट रिसीवर बनाने के लिए, आपको ब्रॉडकास्ट रिसीवर क्लास का विस्तार करना होगा और onReceive(Context,Intent) विधि ओवरराइड करना होगा। यहां आप Intent.getAction() के साथ आने वाले इरादे की जांच कर सकते हैं और तदनुसार कोड निष्पादित कर सकते हैं।

एक नया वर्ग के रूप में, स्थिर

public class Reciever1 extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     String str = intent.getAction(); 
     if(str.equalsIgnoreCase("HELLO1")) { 
      Log.d("Abrar", "reciever....");    
      new Thread() { 
       public void run() {      
        Log.d("Abrar", "reciever...."); 
        System.out.println("Abrar");       
       } 
      }.start();       
     } 

होगा या, यदि किसी मौजूदा वर्ग के अंदर रखा, यह

intentFilter = new IntentFilter(); 
intentFilter.addAction("HELLO1"); 

//---register the receiver--- 
registerReceiver(new Reciever1(), intentFilter);  
+0

मैं इसे 2 डिवाइसों के बीच कैसे कर सकता हूं, उदाहरण के लिए कुछ डेटा किसी अन्य डिवाइस से भेजें? मुझे क्या परिभाषित करना चाहिए ?? – JPerk

+0

@JPerk आपको कनेक्शन को संभालने की आवश्यकता होगी, लेकिन फिर आप डेटा प्राप्त करने के लिए एक कस्टम इरादा परिभाषित कर सकते हैं। एक सभ्य मौका है कि आप कस्टम डेटा प्राप्त करने के मौजूदा सिस्टम के इरादे का उपयोग नहीं करेंगे या आमतौर पर इसमें मौजूद डिफ़ॉल्ट डेटा को संभालना नहीं चाहते हैं। – LoungeKatt

0

BroadcastReceiver साथ गतिशील रूप से कहा जाता है: 'गेटवे' जो के साथ अपने ऐप बताता है एंड्रॉइड ओएस के लिए, आपका ऐप जानकारी प्राप्त करने में रुचि रखता है।

Intent-Filter: BroadcastReceiver के साथ काम करता है और 'क्या' जानकारी प्राप्त करने में रूचि रखता है। उदाहरण के लिए, आपका ऐप बैटरी स्तर पर जानकारी प्राप्त करना चाहता है।

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