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; }
本文地址:https://www.stayed.cn/item/7513
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我