欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2024-02-22 17:57:46
本文实例讲述了android判断网络类型的方法。分享给大家供大家参考,具体如下: 判断网络类型是wifi,还是3g,还是2g网络,对不同的网络进行不同的处理,现将判断方法...

本文实例讲述了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开发入门与进阶教程》、《android数据库操作技巧总结》及《android控件用法总结

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

上一篇: java实现KFC点餐小程序

下一篇: