2012-08-10 16 views
5

मैंने कुछ एंड्रॉइड विज्ञापन नेटवर्क एसडीक्स में देखा कि वे BroadcastReceiver को कोई इरादा फ़िल्टर नहीं घोषित कर रहे हैं। कुछ ऐसा:एंड्रॉइड ब्रॉडकास्ट रिसीवर बिना इरादे फ़िल्टर

<receiver android:name="com.example.SampleReceiver" /> 

मेरा अनुमान है कि ऐसा रिसीवर सभी संभावित घटनाओं को कैप्चर करेगा। तो मैं इसे अपने आप कर की कोशिश की और SampleReceiver एक बना लिया है:

public class SampleReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     System.out.println("Event captured: " + intent.getAction()); 
    } 
} 

मैं एप्लिकेशन लॉन्च करने के बाद, अपने फोन पर विभिन्न कार्रवाई करने से कुछ घटनाओं आग करने की कोशिश की और पाया है कि onReceive() एक बार भी नहीं कहा गया था।

तो सवाल यह है कि - इस तरह के प्रसारण फ़िल्टर के बिना ब्रॉडकास्ट रिसीवर कैसे काम करता है? हो सकता है कि कोड के माध्यम से बनाए जाने वाले इरादे फ़िल्टर की आवश्यकता हो? यदि हां, तो कैसे? यदि नहीं, तो यह किसी भी घटना क्यों नहीं प्राप्त कर रहा है? यहाँ क्या चल रहा है?

+0

आप महान रेटिंग लिखने अब :) – Jin35

उत्तर

0

मुझे लगता है कि निम्नलिखित प्रश्न/उत्तर आप कुछ सुराग देना चाहिए:

Create an IntentFilter in android that matches ALL intents

+0

यह पता चलता है कि इस तरह के BroadcastReceiver सभी घटनाओं प्राप्त नहीं होता है । लेकिन फिर भी सवाल बनी हुई है: फिर ऐसा रिसीवर क्या कर रहा है? फिर भी धन्यवाद। –

+0

मुझे संदेह है कि वे कोड से एक इरादा फ़िल्टर सेट अप करते हैं जिसे आप देख नहीं पा रहे हैं। – wojciii

+0

लेकिन यह अभी भी जवाब नहीं देता है कि वे इसे कैसे करते हैं :) –

5

आप कुछ आशय फिल्टर नहीं है, तो, कुछ प्राप्त करने के लिए एक ही रास्ता रिसीवर स्पष्ट रूप से कॉल करने के लिए है। यह इस तरह दिखेगा:

context.sendBroadcast(new Intent(context, MyBroadcastReceiverClass.class)); 

एक अन्य पुरुष को पहले से ही पोस्ट निम्नलिखित में इस सवाल का जवाब: https://stackoverflow.com/questions/10051256/broadcast-receiver-not-receiving

+0

यदि आप कमांड लाइन द्वारा इसका परीक्षण करना चाहते हैं तो आप 'adb shell am -n com.example/.SampleReceiver' चला सकते हैं। – Jamby

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