今天很好奇qq和微信在连接不可用的wifi的时候会提示“连接超时,请检查你的网络设置”,ConnectivityManager这个类只能判断手机是否连接网络但是不能知道现在连接的网络是否可用,最后采用的ping的方法来判断网络是否可用!直接上代码:
private boolean pingIpAddress(String ipAddress) {
try {
Process process = Runtime.getRuntime().exec("/system/bin/ping -c 1 -w 100 " + ipAddress);
int status = process.waitFor();
if (status == 0) {
return true;
} else {
return false;
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return false;
}
Runtime.getRuntime().exec(“/system/bin/ping -c 1 -w 100 ” + ipAddress);其中参数-c 1是指ping的次数为1次,-w是指超时时间单位为s。
status 等于0的时候表示网络可用,status等于2时表示当前网络不可用。