2014-09-26 5 views
18

मुझे एक आवश्यकता है जहां मैं यह जांचना चाहता हूं कि नेटवर्क से कनेक्ट होने पर कोई इंटरनेट कनेक्टिविटी है या नहीं।एंड्रॉइड में नेटवर्क के भीतर इंटरनेट कनेक्टिविटी की जांच कैसे करें (हॉटस्पॉट के माध्यम से किसी अन्य डिवाइस के इंटरनेट का उपयोग करके)

उदाहरण के लिए, मैं डिवाइस एक और डिवाइस बी

डिवाइस एक डिवाइस बी डिवाइस एक में के साथ हॉटस्पॉट साथ जुड़ा हुआ है, मैं यह वाई फाई के साथ और में डिवाइस बी जुड़ा के रूप में मिलता है - एक डिवाइस हॉटस्पॉट से जुड़ा हुआ है।

अब, अगर मैं डिवाइस बी (टेदरिंग हॉटस्पॉट नहीं) से इंटरनेट को हटा देता हूं, तो डिवाइस ए में, यह अभी भी दिखाता है - वाई-फाई से जुड़ा हुआ है लेकिन इंटरनेट कनेक्टिविटी नहीं है।

कनेक्टिविटी मैनेजर जैसी कक्षाएं यह निर्धारित करने में सहायता करती हैं कि डिवाइस कनेक्टिविटी के बारे में नहीं है या नहीं।

मैं इस मुद्दे को ट्रैक करना चाहता हूं। क्या इसे प्राप्त करने का कोई तरीका है?

+0

+1, अच्छा सवाल, मैं अपने ऐप्स में से एक में इंटरनेट कनेक्टिविटी की जांच कर रहा हूं, लेकिन इस मुद्दे को संभाला नहीं है। अब जवाबों के बारे में चिंतित – nobalG

+0

बी डिवाइस डिवाइस ए के लिए हॉटस्पॉट है? और एक बार जब आप डिवाइस बी के हॉटस्पॉट को बंद कर देते हैं तो आप डिवाइस ए में सही तरीके से पहचानना चाहते हैं? – KOTIOS

+1

हॉटस्पॉट को हटाने के लिए नहीं। डिवाइस बी –

उत्तर

-2

आपके इंटरनेट कनेक्शन की जांच करने के लिए नीचे दिए गए समारोह का प्रयास करें:

public static boolean isInternetConnected(Context mContext) { 

     try { 
      ConnectivityManager connect = null; 
      connect = (ConnectivityManager) mContext 
        .getSystemService(Context.CONNECTIVITY_SERVICE); 

      if (connect != null) { 
       NetworkInfo resultMobile = connect 
         .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 

       NetworkInfo resultWifi = connect 
         .getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

       if ((resultMobile != null && resultMobile 
         .isConnectedOrConnecting()) 
         || (resultWifi != null && resultWifi 
           .isConnectedOrConnecting())) { 
        return true; 
       } else { 
        return false; 
       } 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return false; 
    } 

अपने मैनिफ़ेस्ट फ़ाइल के लिए निम्न अनुमतियां जोड़ें,

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

कृपया प्रश्न को स्पष्ट रूप से पढ़ें उपयोगकर्ता कनेक्टिविटी मैनेजर के साथ समाधान के बारे में पूछ रहा है लेकिन इंटरनेट उपलब्धता के बारे में जानने के लिए नेटवर्क उपलब्धता के बारे में नहीं। –

4

यह एक हास्यास्पद समाधान हो सकता है, लेकिन मैं यह भी लगता है कि यह हो सकता है वास्तविक समाधान:

public boolean isOnline() { 
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
    if (netInfo != null && netInfo.isConnected()) { 
     try { 
      URL url = new URL("http://www.google.com"); 
      HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); 
      urlc.setConnectTimeout(3000); 
      urlc.connect(); 
      if (urlc.getResponseCode() == HttpURLConnection.HTTP_OK) { 
       return new Boolean(true); 
      } 
     } catch (MalformedURLException mue) { 
      // TODO Auto-generated catch block 
      mue.printStackTrace(); 
     } catch (IOException ie) { 
      // TODO Auto-generated catch block 
      ie.printStackTrace(); 
     } 
    } 
    return false; 
} 
+1

+1, हास्यास्पद नहीं है! असल में एक बहुत ही सुरुचिपूर्ण समाधान। – RossC

+1

तो यदि Google ऑफ़लाइन है तो इसका मतलब है कि मेरे पास इंटरनेट नहीं है? –

+0

मुझे ऐसा लगता है। यह आपके सर्वर से कनेक्ट करने की कोशिश की तरह है। अगर Google की जांच न करें। अगर Google कनेक्ट नहीं होता है, तो इसका मतलब है कि आप ऑफ़लाइन हैं। –

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