android判断正在使用的网络类型 0.不知道网络类型;1、2G;2、3G;3、4g;4、wifi

判断正在使用的网络类型 0.不知道网络类型;1、2G;2、3G;3、4g;4、wifi

 1     
 2     /** Unknown network class. {@hide} */
 3     public static final String NETWORK_CLASS_UNKNOWN = "0";
 4     /** Class of broadly defined "2G" networks. {@hide} */
 5     public static final String NETWORK_CLASS_2_G = "1";
 6     /** Class of broadly defined "3G" networks. {@hide} */
 7     public static final String NETWORK_CLASS_3_G = "2";
 8     /** Class of broadly defined "4G" networks. {@hide} */
 9     public static final String NETWORK_CLASS_4_G = "3";
10     /** Class of broadly defined "wifi" networks. {@hide} */
11     public static final String NETWORK_CLASS_WIFI = "4";
12     /**
13      * 判断正在使用的网络类型 0.不知道网络类型;1、2G;2、3G;3、4g;4、wifi
14      * @param context
15      * @return
16      */
17     public static String getNet(Context context) {
18         try {
19             ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
20             State mobile = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
21             State wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
22             if(mobile == State.CONNECTED||mobile==State.CONNECTING) {
23                 NetworkInfo info = manager.getActiveNetworkInfo();
24                 int type = info.getSubtype();
25                 switch (type) {
26                 case TelephonyManager.NETWORK_TYPE_GPRS:
27                 case TelephonyManager.NETWORK_TYPE_EDGE:
28                 case TelephonyManager.NETWORK_TYPE_CDMA:
29                 case TelephonyManager.NETWORK_TYPE_1xRTT:
30                 case TelephonyManager.NETWORK_TYPE_IDEN:
31                     return NETWORK_CLASS_2_G;
32                 case TelephonyManager.NETWORK_TYPE_UMTS:
33                 case TelephonyManager.NETWORK_TYPE_EVDO_0:
34                 case TelephonyManager.NETWORK_TYPE_EVDO_A:
35                 case TelephonyManager.NETWORK_TYPE_HSDPA:
36                 case TelephonyManager.NETWORK_TYPE_HSUPA:
37                 case TelephonyManager.NETWORK_TYPE_HSPA:
38                 case TelephonyManager.NETWORK_TYPE_EVDO_B:
39                 case TelephonyManager.NETWORK_TYPE_EHRPD:
40                 case TelephonyManager.NETWORK_TYPE_HSPAP:
41                     return NETWORK_CLASS_3_G;
42                 case TelephonyManager.NETWORK_TYPE_LTE:
43                     return NETWORK_CLASS_4_G;
44                 default:
45                     return NETWORK_CLASS_UNKNOWN;
46                 }
47             }
48             else if(wifi == State.CONNECTED||wifi==State.CONNECTING) {
49                 return NETWORK_CLASS_WIFI;
50             }
51         } catch (Exception e) {
52             LogUtil.e(tag, e);
53             return NETWORK_CLASS_UNKNOWN;
54         }
55         return NETWORK_CLASS_UNKNOWN;
56     }