/**
* 检测网络是否连接
*
* @return
*/
private
boolean
isNetworkAvailable() {
// 得到网络连接信息
ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
// 去进行判断网络是否连接
if
(manager.getActiveNetworkInfo() !=
null
) {
return
manager.getActiveNetworkInfo().isAvailable();
}
return
false
;
}
public static final boolean ping() {
String result = null;
try {
String ip = "www.baidu";// ping 的地址,可以换成任何一种可靠的外网
Process p = Runtime.getRuntime().exec("ping -c 3 -w 100 " + ip);// ping网址3次
// 读取ping的内容,可以不加
InputStream input = p.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(input));
StringBuffer stringBuffer = new StringBuffer();
String content = "";
while ((content = in.readLine()) != null) {
stringBuffer.append(content);
}
Log.d("------ping-----", "result content : " + stringBuffer.toString());
// ping的状态
int status = p.waitFor();
if (status == 0) {
result = "success";
return true;
} else {
result = "failed";
}
} catch (IOException e) {
result = "IOException";
} catch (InterruptedException e) {
result = "InterruptedException";
} finally {
Log.d("----result---", "result = " + result);
}
return false;
}
要监测网络请求的真实性,这个方法才是最为有效的!! 设置一个连接超时为1s的请求,(只要百度的网络没有问题,这个方法就不会有啥问题)
public static boolean isOnline() {
URL url;
try {
url = new URL("https://www.baidu");
URLConnection conn = url.openConnection();
conn.setConnectTimeout(500);
InputStream inputStream = conn.getInputStream();
return true;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
更多推荐
Android 判断是否能真正上网(避免连入wifi无网的状态)【亲测有效】
发布评论