首页 > 系统 > Android > 正文

Android判断网络类型的方法(2g,3g还是wifi)

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

本文实例讲述了Android判断网络类型的方法。分享给大家供大家参考,具体如下:

判断网络类型是wifi,还是3G,还是2G网络,对不同的网络进行不同的处理,现将判断方法整理给大家,以供参考

说明:下面用到的数据移动2G,联通2G,联通3G,wifi我都已经测试过,暂时手上没有电信的卡,所以没有验证,有电信手机的同事,可以验证一下,验证后将结果发送给大家。

ConnectivityManager connectMgr = (ConnectivityManager) this    .getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo info = connectMgr.getActiveNetworkInfo();

一、判断网络是否是wifi,在判断之前一定要进行的非空判断,如果没有任何网络连接

info ==nullinfo.getType() == ConnectivityManager.TYPE_WIFI

二、判断是否是手机网络

info !=null && info.getType() == ConnectivityManager.TYPE_MOBILE

手机网络进行详细区分:

info.getSubtype() 这里使用 getSubtype(),不是 getType(),getType()返回的是0,或者1,是区分是手机网络还是wifi

info.getSubtype()取值列表如下:

* NETWORK_TYPE_CDMA 网络类型为CDMA
* NETWORK_TYPE_EDGE 网络类型为EDGE
* NETWORK_TYPE_EVDO_0 网络类型为EVDO0
* NETWORK_TYPE_EVDO_A 网络类型为EVDOA
* NETWORK_TYPE_GPRS 网络类型为GPRS
* NETWORK_TYPE_HSDPA 网络类型为HSDPA
* NETWORK_TYPE_HSPA 网络类型为HSPA
* NETWORK_TYPE_HSUPA 网络类型为HSUPA
* NETWORK_TYPE_UMTS 网络类型为UMTS

联通的3G为UMTS或HSDPA,移动和联通的2G为GPRS或EDGE,电信的2G为CDMA,电信的3G为EVDO

android获取手机的ip地址

private String getPhoneIp() {    try {      for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {        NetworkInterface intf = en.nextElement();        for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {          InetAddress inetAddress = enumIpAddr.nextElement();          if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {          //if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet6Address) {            return inetAddress.getHostAddress().toString();          }        }      }    } catch (Exception e) {    }    return "";}

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android数据库操作技巧总结》及《Android控件用法总结

希望本文所述对大家Android程序设计有所帮助。

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