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

作者:lee0oo0 时间:2023-09-15 10:53:23 

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

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

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


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

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


info ==null
info.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,网络类型
0
投稿

猜你喜欢

  • C# WPF数据绑定模板化操作的完整步骤

    2023-05-20 15:44:50
  • C#针对xml基本操作及保存配置文件应用实例

    2022-11-24 05:51:17
  • JDBC实现学生管理系统

    2023-01-22 13:22:19
  • C#9.0新特性详解——顶级程序语句(Top-Level Programs)

    2023-07-05 18:46:03
  • 详解Spring Boot加载properties和yml配置文件

    2023-11-24 07:14:09
  • Kotlin协程Channel源码示例浅析

    2023-06-14 22:54:08
  • Spring Boot 集成PageHelper的使用方法

    2021-10-04 19:16:30
  • 关于springboot 配置文件中属性变量引用方式@@解析

    2023-12-08 21:50:03
  • SpringCloud @FeignClient参数的用法解析

    2022-11-25 06:31:37
  • Flutter底部导航栏的实现方式

    2023-11-05 18:21:36
  • C#代码实现PDF文档操作类

    2022-01-30 07:03:02
  • java文件读写工具类分享

    2023-07-30 21:04:19
  • SpringBoot2 整合Ehcache组件,轻量级缓存管理的原理解析

    2022-02-07 22:04:34
  • C#获取Description特性的扩展类详解

    2022-06-04 13:27:24
  • myBatis实现三 级嵌套复杂对象的赋值问题

    2023-11-23 06:42:26
  • SpringBoot拦截器Filter的使用方法详解

    2023-06-09 07:33:59
  • C#计算字符串相似性的方法

    2022-08-18 11:32:15
  • 判断java文件类型TikaToolKit的实例

    2021-06-29 02:31:09
  • Android Studio卡很久(loading)的问题解决办法

    2023-12-08 02:22:23
  • SpringBoot+Shiro+LayUI权限管理系统项目源码

    2021-07-13 16:35:19
  • asp之家 软件编程 m.aspxhome.com