巴扎黑2017-04-17 14:42:07
public static int getNetWorkStatus(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager != null) {
NetworkInfo networkInfo = connectivityManager
.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
return NETWORK_WIFI_CONNECTION;
}
return NETWORK_MOBILE_CONNECTION;
}
}
return NETWORK_DISCONNECTION;
}
PHP中文网2017-04-17 14:42:07
如果只是想检测网络是否连接,则直接使用 isNetworkConnected()
如果想检测网络连通性(是否能访问网络),则 isNetworkConnected()
与 isNetworkOnline()
结合使用
private boolean isNetworkConnected() {
ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
return (networkInfo != null && networkInfo.isConnected());
}
public boolean isNetworkOnline() {
Runtime runtime = Runtime.getRuntime();
try {
Process ipProcess = runtime.exec("ping -c 1 114.114.114.114");
int exitValue = ipProcess.waitFor();
return (exitValue == 0);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
return false;
}
注:114.114.114.114 可以改成你信任的网站(例如: www.baidu.com)
ringa_lee2017-04-17 14:42:07
个人经验,不喜勿喷。。。
我从来都不管用户是连的3G、4G还是WIFI,我也不管连上WIFI是否是真的有网,因为这都不重要。
重点在于,用户的App能否连接到指定的服务器而已。
So……
直接测试和服务器的连接就好了,在没有联网的情况下,会很快抛出异常的。
Try catch一下就知道了。
或者专门写一个测试连接的API。