2016-12-27 5 views
0

Я создаю приложение для Android, которое полагается на интернет. Как мне обрабатывать случай, когда телефон подключен к Wi-Fi, но он фактически не работает? Как и в случае, когда рядом с символом wifi есть восклицательный знак в StatusBar?Wi-Fi подключен, но не работает

ответ

0

добавить разрешения:

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

Попробуйте это mehod:

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() == 200) { 
       return new Boolean(true); 
      } 
     } catch (MalformedURLException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
    return false; 
} 
0

Вы можете обнаружить скорость Wi-Fi и, если скорость очень низкая, то вы можете справиться с ситуацией.

Во-первых, проверьте, если ваш тип соединения wifi-

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

NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
boolean isConnected = activeNetwork != null && 
activeNetwork.isConnectedOrConnecting(); 
boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI; 

if(isWifi){ 
    WifiInfo wifiInfo = wifiManger.getConnectionInfo(); 
    int mbps = wifiInfo.getLinkSpeed(); 
} 
Смежные вопросы