2012-09-10 17 views
6

पर है या नहीं, मैं चाहता हूं कि मेरा ऐप यह जांच करे कि "डेटा नेटवर्क मोड" या "मोबाइल डेटा" सक्षम है या नहीं, भले ही यह वर्तमान में सक्रिय न हो। दूसरे शब्दों में मुझे यह जांचने की ज़रूरत है कि ऐप संभावित रूप से मोबाइल डेटा शुल्क लेगा, भले ही यह फोन वर्तमान में वाईफाई के माध्यम से कनेक्ट हो।यह जांचने के लिए कि एंड्रॉइड "मोबाइल डेटा"

गुगलिंग करके मुझे निम्नलिखित कोड मिला है जो जांचता है कि "मोबाइल डेटा" सक्रिय है या नहीं।

ConnectivityManager cm = 
     (ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE); 

NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
boolean isMobile = activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE; 

इस कोड के साथ समस्या भले ही यह करने के लिए स्विच ऑन करने पर कि अगर वाईफ़ाई सक्रिय है मोबाइल डेटा सक्रिय रूप में सूचित नहीं किया गया है।

क्या यह कोड यह निर्धारित करने के लिए संशोधित किया जा सकता है कि मोबाइल डेटा "सक्षम" है और इसलिए संभावित रूप से सक्रिय है, इस कोड के बजाए संभावित रूप से सक्रिय कनेक्शन मोड है या नहीं?

+0

इस देखें: http://stackoverflow.com/questions/3644144/how-to-disable-mobile-data-on-android – Sharp80

+0

देखते हैं कि यह: http://stackoverflow.com/questions/3644144/how -to-अक्षम-मोबाइल-डेटा-ऑन-एंड्रॉइड – Sharp80

+0

क्या आपको इसका समाधान मिला? –

उत्तर

2

प्रयास करें इस

ConnectivityManager cm = (ConnectivityManager) 
      activity.getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo networkInfo = cm.getActiveNetworkInfo(); 
     // if no network is available networkInfo will be null 
     // otherwise check if we are connected 
     if (networkInfo != null && networkInfo.isConnected()) { 
      return true; 
     } 
     return false; 
+0

सुझाव के लिए धन्यवाद; हालांकि, यदि यह वाईफाई या मोबाइल डेटा कनेक्शन उपलब्ध है तो यह कोड सत्य लौटाता है। मैं विशेष रूप से पता लगाने की कोशिश कर रहा हूं कि मोबाइल डेटा सक्षम है या नहीं (भले ही वाईफ़ाई कनेक्शन हो)। – prepbgg

0

कृपया इस कोड को देखो: (Play स्टोर पर अपने प्रकाशित ऐप्स में से एक के कोड)

private static boolean isAPNEnabled(Context paramContext) { 
    try { 
     NetworkInfo networkInfo = ((ConnectivityManager) paramContext.getSystemService("connectivity")).getActiveNetworkInfo(); 
     return networkInfo.isConnected(); 
    } catch (Exception e) { 
     return false; 
    } 
} 
+0

सुझाव के लिए धन्यवाद; हालांकि, यदि यह वाईफाई या मोबाइल डेटा कनेक्शन उपलब्ध है तो यह कोड सत्य लौटाता है। मैं विशेष रूप से पता लगाने की कोशिश कर रहा हूं कि मोबाइल डेटा सक्षम है या नहीं (भले ही वाईफ़ाई कनेक्शन हो)। – prepbgg

2

इस प्रयास करें, यह ज्यादातर मामलों में काम करता है।

ConnectivityManager cm = 
       (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 

     NetworkInfo activeNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
     boolean isConnected = activeNetwork != null && 
       activeNetwork.isConnected(); 

     if (!isConnected) 
     { 
      return false; 
     } 
+0

नोट: 'getNetworkInfo() 'एपीआई 23 के बाद से हटा दिया गया है। – milosmns

0

मुझे यकीन है कि यह सभी उपकरणों पर काम करेंगे नहीं कर रहा हूँ, लेकिन यह कुछ मैं करने की कोशिश की पर काम करता है:

private boolean isMobileDataEnabled(Context ctx) { 
    int mobileData = Settings.Secure.getInt(ctx.getContentResolver(), "mobile_data", 0); 
    return mobileData == 1; 
} 

यह भले ही मैं एक सक्रिय वाईफ़ाई है सही परिणाम वापस जाने के लिए लगता है कनेक्शन।

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