Android网络类型判断
判断网络类型是wifi,还是3G,还是2G网络,对不同的网络进行不同的处理,现将判断方法整理给大家,以供参考。
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) {
returninetAddress.getHostAddress().toString();
}
}
}
} catch(Exception e) {
}
return"";
}