2010-09-09 38 views
6

Tôi không muốn ứng dụng của mình gặp sự cố nếu người dùng không có kết nối wifi hoặc 3g. Làm thế nào tôi có thể nắm bắt điều này khi chạy trong ứng dụng của tôi?Làm thế nào để phát hiện xem người dùng có 3G/Wifi trước khi thực hiện kết nối URL?

+5

Xem [ cách kiểm tra conection internet trong android? ] (http://stackoverflow.com/questions/2326767/how-to-check-internet-conection-in-android). –

Trả lời

7

Đầu tiên hãy tham khảo ConnectivityManager và sau đó check the Wifi and 3G status của thiết bị. Bạn sẽ cần quyền ACCESS_NETWORK_STATE để sử dụng dịch vụ này.

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) không được dùng nữa.

Dưới đây là giải pháp được cải thiện cho SDK Android mới nhất.

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; 
     } 
Các vấn đề liên quan