इम CONNECTIVITY_ACTION से BroadcastMessages प्राप्त करने की कोशिश कर में अशक्त रिटर्न:BroadcastReceiver हमेशा intent.getExtras()
// register BroadcastReceiver on network state changes
final IntentFilter mIFNetwork = new IntentFilter();
mIFNetwork.addAction(android.net.ConnectivityManager.CONNECTIVITY_ACTION); //"android.net.conn.CONNECTIVITY_CHANGE"
registerReceiver(mIRNetwork, mIFNetwork);
और रिसीवर है:
private BroadcastReceiver mIRNetwork = new BroadcastReceiver() {
@Override
public void onReceive(final Context context, final Intent intent) {
android.util.Log.i(TAG,"mIRNetwork: Network State Received: "+intent.getAction());
Bundle extras = intent.getExtras();
if (extras!=null){
android.util.Log.i(TAG,"mIRNetwork: ACTION_BACKGROUND_DATA_SETTING_CHANGED: "+extras.getString(ConnectivityManager.ACTION_BACKGROUND_DATA_SETTING_CHANGED));
android.util.Log.i(TAG,"mIRNetwork: CONNECTIVITY_ACTION: "+extras.getString(ConnectivityManager.CONNECTIVITY_ACTION));
android.util.Log.i(TAG,"mIRNetwork: EXTRA_EXTRA_INFO: "+extras.getString(ConnectivityManager.EXTRA_EXTRA_INFO));
android.util.Log.i(TAG,"mIRNetwork: EXTRA_NO_CONNECTIVITY: "+extras.getString(ConnectivityManager.EXTRA_NO_CONNECTIVITY));
android.util.Log.i(TAG,"mIRNetwork: EXTRA_REASON: "+extras.getString(ConnectivityManager.EXTRA_REASON));
}
}
कम एक्स्ट्रा कलाकार में हमेशा से रिक्त है। मैंने सोचा कि अगर मैं वाईफाई कनेक्शन खो देता हूं तो मुझे EXTRA_NO_CONNECTIVITY (cuz इसका इंटरनेट का एकमात्र तरीका) या कम से कम सूची से कुछ प्राप्त करना चाहिए। लेकिन कोई भाग्य नहीं है। अगर मैं अपने वाईफाई एपी रिसीवर को डिस्कनेक्ट करता हूं तो उसका संदेश मिलता है लेकिन शून्य एक्स्ट्रा के साथ। जब मैं एक बार फिर रिसीवर आग पर अपनी वाईफाई वापस चालू करता हूं लेकिन कोई अतिरिक्त नहीं ... वह क्यों है? कैसे पता चले कि ऐप ने कोई नेटवर्क कनेक्शन खो दिया है? मैंने इसका रास्ता सोचा।
'if (! Action.equals (ConnectivityManager.CONNECTIVITY_ACTION)) है' कर सकते हैं ' यह समझ में नहीं आता है जब फिल्टर में जोड़ा गया एकमात्र क्रिया CONNECTIVITY_ACTION है? –
@ मुहम्मदबाबर यदि आप कनेक्टिविटी के लिए केवल एक ही क्रिया पंजीकृत करते हैं तो आप कार्रवाई की जांच करने के लिए शर्त को अनदेखा कर सकते हैं। – Dharmendra
यह जांचने के लिए कि क्या हमारे पास इंटरनेट कनेक्शन है, क्या यह केवल "! Intent.getBooleanExtra (ConnectivityManager.EXTRA_NO_CONNECTIVITY, false)" का उपयोग करना सुरक्षित है? –