android - टवर - मोबाइल डेटा सेटिंग




यह पता लगाएं कि एंड्रॉइड पर एक इंटरनेट कनेक्शन उपलब्ध है (4)

संभावित डुप्लिकेट:
एंड्रॉइड पर इंटरनेट एक्सेस कैसे जांचें? InetAddress कभी टाइमआउट नहीं

मुझे यह पता लगाने की ज़रूरत है कि एंड्रॉइड डिवाइस इंटरनेट से जुड़ा हुआ है या नहीं।

NetworkInfo क्लास एक गैर स्थैतिक विधि प्रदान करता है उपलब्ध isAvailable() जो सही लगता है।

समस्या यह है कि:

NetworkInfo ni = new NetworkInfo();
if (!ni.isAvailable()) {
    // do something
}

इस त्रुटि को फेंकता है:

The constructor NetworkInfo is not visible.

सुरक्षित शर्त एक और वर्ग है जो NetworkInfo ऑब्जेक्ट देता है। लेकिन मुझे नहीं पता कि कौन सा।

  1. कोड के उपरोक्त स्निपेट को काम करने के लिए कैसे प्राप्त करें?
  2. ऑनलाइन दस्तावेज में मुझे अपनी जानकारी कैसे मिल सकती है?
  3. क्या आप इस प्रकार के पहचान के लिए एक बेहतर तरीका सुझा सकते हैं?

कनेक्टिविटीमैनेजर की getActiveNetworkInfo () विधि एक नेटवर्कइन्फो इंस्टेंस देता है जो पहले कनेक्टेड नेटवर्क इंटरफ़ेस का प्रतिनिधित्व करता है, यदि इंटरफेस कनेक्ट होने पर कोई भी नहीं ढूंढ पाता है या शून्य हो सकता है। यह जांचना कि क्या यह विधि शून्य लौटाती है, यह बताने के लिए पर्याप्त होना चाहिए कि कोई इंटरनेट कनेक्शन उपलब्ध है या नहीं।

private boolean isNetworkAvailable() {
     ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
     NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
     return activeNetworkInfo != null; 
}

आपको इसकी भी आवश्यकता होगी:

अपने एंड्रॉइड मेनिफेस्ट में।

संपादित करें:

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

getActiveNetworkInfo () को कभी भी शून्य नहीं देना चाहिए। मुझे नहीं पता कि वे क्या सोच रहे थे जब वे इसके साथ आए थे। यह आपको हमेशा एक वस्तु देना चाहिए।


एक और महत्वपूर्ण नोट भी। काम करने के लिए आपको अपने AndroidManifest.xml में android.permission.ACCESS_NETWORK_STATE सेट करना होगा।

_ मुझे ऑनलाइन दस्तावेज में मुझे आवश्यक जानकारी कैसे मिल सकती है?

आपको बस कक्षाओं को उचित रूप से पर्याप्त दस्तावेज पढ़ना होगा और आपको वह सभी उत्तर मिलेंगे जिन्हें आप ढूंढ रहे हैं। ConnectivityManager मैनेजर पर प्रलेखन देखें। वर्णन आपको बताता है कि क्या करना है।


मैं निम्नानुसार वाई-फाई और मोबाइल इंटरनेट की जांच करता हूं ...

private boolean haveNetworkConnection() {
    boolean haveConnectedWifi = false;
    boolean haveConnectedMobile = false;

    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo[] netInfo = cm.getAllNetworkInfo();
    for (NetworkInfo ni : netInfo) {
        if (ni.getTypeName().equalsIgnoreCase("WIFI"))
            if (ni.isConnected())
                haveConnectedWifi = true;
        if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
            if (ni.isConnected())
                haveConnectedMobile = true;
    }
    return haveConnectedWifi || haveConnectedMobile;
}

जाहिर है, इसे आसानी से अलग-अलग विशिष्ट कनेक्शन प्रकारों की जांच के लिए संशोधित किया जा सकता है, उदाहरण के लिए, यदि आपके ऐप को वाई-फाई की संभावित उच्च गति की सही ढंग से काम करने की आवश्यकता है।


शायद मैंने खुद को पाया है:

ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
return connectivityManager.getActiveNetworkInfo().isConnectedOrConnecting();






android-internet