fdfdkkk 发表于 2015-10-2 11:45:12

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   }
  
页: [1]
查看完整版本: android判断正在使用的网络类型 0.不知道网络类型;1、2G;2、3G;3、4g;4、wifi