软件编程
位置:首页>> 软件编程>> Android编程>> Android 判断是否有外网连接

Android 判断是否有外网连接

作者:hebedich  发布时间:2022-12-02 21:48:13 

标签:Android,判断外网连接

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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com