Android 判断是否有外网连接

jopen 9年前

       有时候我们连接上一个没有外网连接的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;        }  

来自:http://blog.csdn.net/rain_butterfly/article/details/41890877