Android 判断是否有外网连接
程序员文章站
2024-02-20 23:25:34
android里判断是否可以上网,常用的是如下方法:
/**
* 检测网络是否连接
*
* @return
*/
private boolea...
android里判断是否可以上网,常用的是如下方法:
/** * 检测网络是否连接 * * @return */ private boolean isnetworkavailable() { // 得到网络连接信息 connectivitymanager manager = (connectivitymanager) getsystemservice(context.connectivity_service); // 去进行判断网络是否连接 if (manager.getactivenetworkinfo() != null) { return manager.getactivenetworkinfo().isavailable(); } return false; }
有时候我们连接上一个没有外网连接的wifi或者有线就会出现这种极端的情况,目前android sdk还不能识别这种情况,一般的解决办法就是ping一个外网。
/* @author suncat * @category 判断是否有外网连接(普通方法不能判断外网的网络是否连接,比如连接上局域网) * @return */ public static final boolean ping() { string result = null; try { string ip = "www.baidu.com";// 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; }