Android网络类型判断

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

 

联通的3GUMTSHSDPA,移动和联通的2GGPRSEDGE,电信的2GCDMA,电信

3GEVDO

 

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"";

}

你可能感兴趣的:(android)