首页 > 系统 > Android > 正文

Android 判断是否有外网连接

2020-04-11 10:48:23
字体:
来源:转载
供稿:网友

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;}

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表