public class NetUtil { public static final String NO_NET = "NO"; public static final String TWO_NET = "2G"; public static final String THREE_NET = "3G"; public static final String FOUR_NET = "4G"; public static final String MISSING_NET = "unknown"; public static final String WIFI_NET = "WIFI"; /** * 获取当前网络类型 * * @param context * @return 2G/3G/4G/WIFI/no/unknown */ public static String getNetType(Context context) { ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); final NetworkInfo info = cm.getActiveNetworkInfo(); if (info == null || !info.isAvailable()) { return NO_NET; } if (info.getType() == ConnectivityManager.TYPE_WIFI) { return WIFI_NET; } if (info.getType() == ConnectivityManager.TYPE_MOBILE) { int sub = info.getSubtype(); switch (sub) { case TelephonyManager.NETWORK_TYPE_GPRS: case TelephonyManager.NETWORK_TYPE_EDGE: case TelephonyManager.NETWORK_TYPE_CDMA://电信的2G case TelephonyManager.NETWORK_TYPE_1xRTT: case TelephonyManager.NETWORK_TYPE_IDEN: //以上的都是2G网络 return TWO_NET; case TelephonyManager.NETWORK_TYPE_UMTS: case TelephonyManager.NETWORK_TYPE_EVDO_A: case TelephonyManager.NETWORK_TYPE_HSDPA: case TelephonyManager.NETWORK_TYPE_HSUPA: case TelephonyManager.NETWORK_TYPE_HSPA: case TelephonyManager.NETWORK_TYPE_EVDO_B: case TelephonyManager.NETWORK_TYPE_EHRPD: case TelephonyManager.NETWORK_TYPE_HSPAP: //以上的都是3G网络 return THREE_NET; case TelephonyManager.NETWORK_TYPE_LTE: return FOUR_NET; case TelephonyManager.NETWORK_TYPE_UNKNOWN: return MISSING_NET; default: return MISSING_NET; } } return MISSING_NET; } }