本文实例讲述了android判断网络类型的方法。分享给大家供大家参考,具体如下:
判断网络类型是wifi,还是3g,还是2g网络,对不同的网络进行不同的处理,现将判断方法整理给大家,以供参考
说明:下面用到的数据移动2g,联通2g,联通3g,wifi我都已经测试过,暂时手上没有电信的卡,所以没有验证,有电信手机的同事,可以验证一下,验证后将结果发送给大家。
1
2
3
|
connectivitymanager connectmgr = (connectivitymanager) this .getsystemservice(context.connectivity_service); networkinfo info = connectmgr.getactivenetworkinfo(); |
一、判断网络是否是wifi,在判断之前一定要进行的非空判断,如果没有任何网络连接
1
2
|
info == null info.gettype() == connectivitymanager.type_wifi |
二、判断是否是手机网络
1
|
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地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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程序设计有所帮助。