में रोमिंग बंद होने पर पता लगाने पर मैंने BroadcastReceiver
बनाया जो CONNECTIVITY_CHANGE
ईवेंट के लिए सुनता है। अभी के लिए, मैं बस Intent
की कार्रवाई को प्रिंट करता हूं जो BroadcastReceiver
और इसके अतिरिक्त को कॉल करता है। मैं यहां मनीला में हमारे कार्यालय में एक टेस्ट फोन का उपयोग कर रहा हूं और सिम कार्ड डेनमार्क से है। जब onReceive()
शुरू हो जाती है, यह क्या LogCat में मुद्रित हो जाता है:एंड्रॉइड
action: android.net.conn.CONNECTIVITY_CHANGE
key: extraInfo, value: data.tre.dk
key: htcCurrentActiveNetwork, value: null
key: networkInfo, value: null
key: reason, value: roamingOn
key: noConnectivity, value: null
key: inetCondition, value: null
मुझे पता है कि क्या reason
का मूल्य है जब रोमिंग बंद हो जाता है की जरूरत है - का अनुमान लगाकर roamingOff
हो सकता है, लेकिन मुझे नहीं पता कर सकते हैं निश्चित रूप से, जब तक मैं डेनमार्क नहीं जाता। ऐसा इसलिए है क्योंकि रोमिंग सेवा बंद होने पर मुझे एक कार्य करने की ज़रूरत है, और मैंने लॉगकैट से देखा कि CONNECTIVITY_CHANGE
घटना रोमिंग मोड को टॉगल करने के अलावा अन्य कारणों से निकाल दी गई है। या रोमिंग बंद होने पर पता लगाने का एक बेहतर तरीका है?
प्रसारण रिसीवर के लिए कोड:
public void onReceive(Context context, Intent intent) {
Log.d(This.LOGTAG, "action: " + intent.getAction());
Bundle extras = intent.getExtras();
for (String key : extras.keySet()) {
Log.d(This.LOGTAG, "key: " + key + ", value: " + extras.getString(key));
}
}
प्रकट प्रविष्टि:
Settings.Secure.getInt(getContentResolver(), Settings.Secure.DATA_ROAMING)
यह:
<receiver android:name=".listener.RoamingListener">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
मैंने 'TelephonyManager.isNetworkRoaming()' के परिणाम के साथ उस पंक्ति का नतीजा अभी लॉग किया है।मुझे पता चला कि 'सेटिंग्स.Secure.DATA_ROAMING' '0' (अर्थात्, डेटा रोमिंग बंद है) लौटा सकता है जबकि' isNetworkRoaming()' सत्य है। मुझे लगता है कि यह इसलिए है क्योंकि टेलको अभी भी नेटवर्क रोमिंग मोड में है लेकिन मैं अपने डिवाइस को मोबाइल इंटरनेट का उपयोग करने की इजाजत नहीं दे रहा हूं। वे अलग-अलग स्विच लगते हैं, और मैं नेटवर्क रोमिंग मोड के बाद हूं। –
और आप क्या जानना चाहते हैं? मुझे लगता है कि 'TelephonyManager.isNetworkRoaming()' दिखाता है कि आप रोमिंग में हैं, और सेटिंग सेट करते हैं यदि आप – Jin35
रोमिंग में इंटरनेट का उपयोग कर सकते हैं, तो मैं नेटवर्क रोमिंग मोड के बाद हूं क्योंकि मैं उपयोगकर्ता के अगले मासिक बिल को मापने की कोशिश कर रहा हूं-- और इसमें डेटा रोमिंग के माध्यम से भेजे गए/प्राप्त किए गए मोबाइल डेटा की मात्रा शामिल नहीं है। –