Android判断网络类型的方法(2g,3g还是wifi)
本文实例讲述了Android判断网络类型的方法。分享给大家供大家参考,具体如下:
判断网络类型是wifi,还是3G,还是2G网络,对不同的网络进行不同的处理,现将判断方法整理给大家,以供参考
说明:下面用到的数据移动2G,联通2G,联通3G,wifi我都已经测试过,暂时手上没有电信的卡,所以没有验证,有电信手机的同事,可以验证一下,验证后将结果发送给大家。
ConnectivityManagerconnectMgr=(ConnectivityManager)this .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfoinfo=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地址
privateStringgetPhoneIp(){ try{ for(Enumeration<NetworkInterface>en=NetworkInterface.getNetworkInterfaces();en.hasMoreElements();){ NetworkInterfaceintf=en.nextElement(); for(Enumeration<InetAddress>enumIpAddr=intf.getInetAddresses();enumIpAddr.hasMoreElements();){ InetAddressinetAddress=enumIpAddr.nextElement(); if(!inetAddress.isLoopbackAddress()&&inetAddressinstanceofInet4Address){ //if(!inetAddress.isLoopbackAddress()&&inetAddressinstanceofInet6Address){ returninetAddress.getHostAddress().toString(); } } } }catch(Exceptione){ } return""; }
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android数据库操作技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。