2010-09-09 7 views
6

मैं नहीं चाहता कि मेरा ऐप क्रैश हो जाए यदि उपयोगकर्ता के पास वाईफाई या 3 जी कनेक्टिविटी नहीं है। मैं अपने ऐप में रनटाइम पर इसे कैसे पकड़ सकता हूं?यूआरएल कनेक्शन बनाने से पहले उपयोगकर्ता का पता लगाने के लिए 3 जी/वाईफ़ाई है या नहीं?

+5

देखें [ एंड्रॉइड में इंटरनेट का पता लगाने के लिए कैसे करें? ] (http://stackoverflow.com/questions/2326767/how-to-check-internet-conection-in-android)। –

उत्तर

7

पहले कनेक्टिविटी प्रबंधक और फिर check the Wifi and 3G status डिवाइस का संदर्भ प्राप्त करें। आपको इस सेवा का उपयोग करने के लिए ACCESS_NETWORK_STATE अनुमति की आवश्यकता होगी।

ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); 
    NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
    NetworkInfo mMobile = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 

    if (mWifi.isConnected() == false && mMobile.isConnected() == false) { 
     showDialog(DIALOG_NETWORK_UNAVAILABLE); 
    } 
1

connManager.getNetworkInfo (ConnectivityManager.TYPE_WIFI) मान्य नहीं है।

नीचे नवीनतम एंड्रॉयड एसडीके के लिए एक बेहतर समाधान है।

ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE); 
     boolean is3gEnabled = false; 
     if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      Network[] networks = connManager.getAllNetworks(); 
      for(Network network: networks) 
      { 
       NetworkInfo info = connManager.getNetworkInfo(network); 
       if(info!=null) { 
        if (info.getType() == ConnectivityManager.TYPE_MOBILE) { 
         is3gEnabled = true; 
         break; 
        } 
       } 
      } 
     } 
     else 
     { 
      NetworkInfo mMobile = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
      if(mMobile!=null) 
       is3gEnabled = true; 
     } 
संबंधित मुद्दे