2016-12-27 149 views
0

我正在创建一个依靠互联网的Android应用程序。我如何处理手机连接到Wifi的情况,但实际上并没有工作? 正如在StatusBar的wifi图标旁边有感叹号一样?已连接但无法连接的Wifi

回答

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

您可以检测到无线网络的速度,如果速度是非常低的,那么你可以处理这种情况。

首先,检查你的网络连接类型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(); 
}