Android中判断网络连接状态的方法

 更新时间:2016年02月13日 16:27:39   投稿:lijiao  
App判断用户是否联网是很普遍的需求,这篇文章主要介绍了Android中判断网络连接状态的方法,感兴趣的朋友可以参考一下

App判断用户是否联网是很普遍的需求,实现思路大概有下面几种

  • 利用Android自带的ConnectivityManager类
  • 有时候连上了wifi,但这个wifi是上不了网的,我们可以通过ping www.baidu.com来判断是否可以上网
  • 也可以利用get请求访问www.baidu.com,如果get请求成功,说明可以上网

1、判断网络是否已经连接

// check all network connect, WIFI or mobile
public static boolean isNetworkAvailable(final Context context) {
  boolean hasWifoCon = false;
  boolean hasMobileCon = false;
 
  ConnectivityManager cm = (ConnectivityManager) context.getSystemService(context.CONNECTIVITY_SERVICE);
  NetworkInfo[] netInfos = cm.getAllNetworkInfo();
  for (NetworkInfo net : netInfos) {
 
    String type = net.getTypeName();
    if (type.equalsIgnoreCase("WIFI")) {
      LevelLogUtils.getInstance().i(tag, "get Wifi connection");
      if (net.isConnected()) {
        hasWifoCon = true;
      }
    }
 
    if (type.equalsIgnoreCase("MOBILE")) {
      LevelLogUtils.getInstance().i(tag, "get Mobile connection");
      if (net.isConnected()) {
        hasMobileCon = true;
      }
    }
  }
  return hasWifoCon || hasMobileCon;
 
}

2、利用 ping 判断 Internet 能够 请求成功
Note:有时候连上了网络, 但却上不去外网

// network available cannot ensure Internet is available
public static boolean isNetWorkAvailable(final Context context) {
  Runtime runtime = Runtime.getRuntime();
  try {
    Process pingProcess = runtime.exec("/system/bin/ping -c 1 www.baidu.com");
    int exitCode = pingProcess.waitFor();
    return (exitCode == 0);
  } catch (Exception e) {
    e.printStackTrace();
  }
  return false;
}

考虑到网络, 我们 ping 了www.baidu.com
国外的话可以 ping 8.8.8.8

3、其他方案 模拟 get 请求

也可以访问网址, 看 get 请求能不能成功

URL url = new URL("http://www.google.com");
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setConnectTimeout(3000);
urlc.connect();
if (urlc.getResponseCode() == 200) {
  return new Boolean(true);
}

以上就是本文的全部内容,希望对大家学习Android软件编程有所帮助。

相关文章

  • Android编程实现ActionBar的home图标动画切换效果

    Android编程实现ActionBar的home图标动画切换效果

    这篇文章主要介绍了Android编程实现ActionBar的home图标动画切换效果,涉及Android布局、样式、Activity及菜单相关操作技巧,需要的朋友可以参考下
    2017-01-01
  • Android震动与提示音实现代码

    Android震动与提示音实现代码

    这篇文章主要为大家详细介绍了Android震动与提示音实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Android 之Preference控件基本使用示例详解

    Android 之Preference控件基本使用示例详解

    这篇文章主要为大家介绍了Android 之Preference控件基本使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Android基于HttpUrlConnection类的文件下载实例代码

    Android基于HttpUrlConnection类的文件下载实例代码

    本文通过实例代码给大家介绍了Android基于HttpUrlConnection类的文件下载功能,非常不错,具有参考借鉴价值,需要的的朋友参考下吧
    2017-09-09
  • Android编程之基于Log演示一个activity生命周期实例详解

    Android编程之基于Log演示一个activity生命周期实例详解

    这篇文章主要介绍了Android编程之基于Log演示一个activity生命周期,结合完整实例形式较为详细的分析总结了Log演示activity生命周期的具体用法及Log的具体使用方法,需要的朋友可以参考下
    2015-12-12
  • Android获取SD卡路径及SDCard内存的方法

    Android获取SD卡路径及SDCard内存的方法

    这篇文章主要介绍了Android获取SD卡路径及SDCard内存的方法,较为详细的分析了Android针对SD卡操作所涉及的类及其具体函数功能,非常具有实用价值,需要的朋友可以参考下
    2015-02-02
  • Android切换前后台点击通知进入当前页面

    Android切换前后台点击通知进入当前页面

    这篇文章主要介绍了Android切换前后台点击通知进入当前页面,主要讲述当App退出到后台的后,怎么点击通知回到原来按下HOME键之前的前台页面,需要的朋友可以参考下
    2023-03-03
  • PopupWindow使用方法详解

    PopupWindow使用方法详解

    这篇文章主要为大家详细介绍了PopupWindow的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Android支持国际化多语言那点事(支持8.0+)

    Android支持国际化多语言那点事(支持8.0+)

    我们在开发app可能会拓展国外市场,那么对包含英语在内的其它语言支持就很有必要了。这篇文章主要介绍了Android支持国际化多语言那点事(支持8.0+),具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Android编程使用HTTP协议与TCP协议实现上传文件的方法

    Android编程使用HTTP协议与TCP协议实现上传文件的方法

    这篇文章主要介绍了Android编程使用HTTP协议与TCP协议实现上传文件的方法,结合实例形式较为详细的分析了Android使用HTTP协议与TCP协议的具体步骤与实现文件传输的相关技巧,需要的朋友可以参考下
    2016-01-01

最新评论