首页 > 代码库 > Android 判断是否能真正上网

Android 判断是否能真正上网

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

 

Android 判断是否能真正上网