6

मैंने नेटवर्क स्टेट इवेंट प्राप्त करने के लिए ConnectivityManager.CONNECTIVITY_ACTION ब्रॉडकास्ट रिसीवर में पंजीकृत किया है, लेकिन मेरे onReceive फ़ंक्शन को मेरे वाईफाई कनेक्शन को चालू या बंद करने पर कॉल नहीं किया जा रहा है।नेटवर्क से संबंधित घटनाएं प्राप्त करने में सक्षम नहीं

जैसा कि दस्तावेज़ों में उल्लिखित है, यह एक चिपचिपा प्रसारण रिसीवर है जिसे हम इसके लिए पंजीकृत करते समय निकाल दिया जाता है।

लेकिन जब मैं इस रिसीवर के लिए पंजीकरण करता हूं तो मुझे अपने onReceive फ़ंक्शन में कोई ईवेंट नहीं मिल रहा है, इसका कारण क्या हो सकता है?

मेरी मैनिफेस्ट फ़ाइल में, मेरे पास इंटरनेट/नेटवर्क/वाईफ़ाई कनेक्शन और उनके राज्यों तक पहुंचने के लिए सभी अनुमतियां हैं।

मैं इस आशय निम्नलिखित कोड का उपयोग कर के साथ पंजीयन कर रहा हूँ:

registerReceiver(mNetworkStateReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); 

मेरी Logcat में, मैं इस प्रसारण रिसीवर के लिए त्रुटि संदेश रजिस्टर निम्नलिखित हो:

01-01 00:05:29.804: ERROR/WifiHW(1305): Unable to open connection to supplicant on "/data/system/wpa_supplicant/wlan0": Connection refused 

क्या कारण हो सकता है? क्या ब्रॉडकास्ट रिसीवर ठीक से पंजीकृत है या नहीं, यह पता लगाने का कोई तरीका है?

धन्यवाद। त्रुटि Googling कई ROM हैकिंग मंचों और उनके वाईफ़ाई खराबी का पता चलता है -

+0

यदि आप रिसीवर को अपने मैनिफेस्ट के माध्यम से पंजीकृत करते हैं तो क्या आपको वही समस्या दिखाई देती है? क्या आप वाईफाई कनेक्शन डेटा ट्रांसमिशन के लिए प्रयोग योग्य हैं? क्या आप 'mNetworkStateReceiver'' के लिए 'onReceive()' में उपयोग कर रहे कोड को पोस्ट करना संभव है? –

+0

मैंने कभी भी इसे प्रकट फ़ाइल के माध्यम से पंजीकृत करने का प्रयास नहीं किया है, मैं इसे पहले कोशिश करूंगा! – User7723337

+0

क्या आपको बक्षीस देने का विचार किया जा सकता है। अन्यथा यह व्यर्थ – Sameer

उत्तर

4

यह मेरे लिए काम करता है:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

<receiver android:name=".receiver.ConnectivityReceiver"> 
    <intent-filter> 
     <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
    </intent-filter> 
</receiver> 

कोड:

public class ConnectivityReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.d(ConnectivityReceiver.class.getSimpleName(), "action: " 
       + intent.getAction()); 
    } 
} 

और सभी नेटवर्क अनुमति दर्ज की भूल नहीं है।

+0

यह पर्याप्त है <<उपयोग-अनुमति एंड्रॉइड: नाम = "android.permission.INTERNET" /> <उपयोग-अनुमति एंड्रॉइड: name = "android.permission.ACCESS_NETWORK_STATE" /> <उपयोग-अनुमति एंड्रॉइड: name = " android.permission.ACCESS_WIFI_STATE "/>' सही! या क्या हमें कोई अन्य अनुमति जोड़नी है? – Shravan

+0

क्या आप इस http://stackoverflow.com/q/30062487/3742271 पर एक नज़र डाल सकते हैं? – Shravan

3

यह मैनिफ़ेस्ट फ़ाइल

<receiver android:name=".MyNetworkStateReceiver" > 
    <intent-filter > 
     <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
    </intent-filter> 
</receiver> 

वर्ग MyNetworkStateReceiver का उपयोग कर का विस्तार करना चाहिए BroadcastReceiver

+0

में जायेगा मैं इसे जावा कोड के माध्यम से कर रहा हूं, इसे प्रकट फ़ाइल में जोड़ने की आवश्यकता नहीं है। – User7723337

0

एक निचले स्तर मुद्दा ऐसा लगता है की कोशिश करो। आप किस पर परीक्षण कर रहे हैं? किसी अन्य डिवाइस या एमुलेटर पर परीक्षण करने का प्रयास करें। (मैं तुम्हें तुम्हारा रिबूट करने की कोशिश की है मान लेते हैं :))

इसके अलावा, सुनिश्चित करें कि आप रिसीवर जब अपनी गतिविधि/सेवा को नष्ट कर दिया जाता है

पी एस मैं तुम्हें पता है (शायद इस कनेक्शन त्रुटि के साथ कुछ है) का पंजीकरण रद्द कर ने कहा, लेकिन अभी भी दोहरी जांच करें कि आपके पास

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

आपके मैनिफेस्ट में है।

0

आप इंटरनेट, वाईफ़ाई और मल्टीकास्ट लॉक के लिए अनुमतियां प्राप्त करने का भी प्रयास कर सकते हैं, इन्हें अनुमतियों में जोड़ने का प्रयास करें।

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/> 

मुझे लगता है कि न केवल नेटवर्क डाटा भेजने और प्राप्त करने के लिए वाई-फाई, लेकिन (लैन, रेडियो) नेटवर्क एडाप्टर किसी भी प्रकार की है कि मैं फ़िल्टर किया जा सकता है का उपयोग करता है मैं का निर्माण किया है घर आवेदन में एक के लिए इन अनुमति का उपयोग करने के लिए आवश्यक कर रहा हूँ सी में एसडीके के माध्यम से (डिवाइस रूट होना चाहिए)। लेकिन इन अनुमतियों का उपयोग करके मुझे कोई परेशानी नहीं है।

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