/** * @Description:检查当前网络状态 * @Author:chen */ public class NetStatusUtil { /** * 检测当前打开的网络类型是否WIFI * * @param context 上下文 * @return 是否是Wifi上网 */ public static boolean isWifi(Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context .CONNECTIVITY_SERVICE); NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); return activeNetInfo != null && activeNetInfo.getType() == ConnectivityManager.TYPE_WIFI; } /** * 是否有网 */ public static boolean isConnected(Context context) { return netStatus(context) != NetState.NET_NO; } /** * 枚举网络状态 NET_NO:没有网络 NET_2G:2g网络 NET_3G:3g网络 NET_4G:4g网络 NET_WIFI:wifi * NET_UNKNOWN:未知网络 */ public enum NetState { //没有网络 NET_NO, //2g NET_2G, //3g NET_3G, //4g NET_4G, //wifi NET_WIFI, //未知网络 NET_UNKNOWN } /** * 判断当前是否网络连接 * * @param context 上下文 * @return 状态码 */ public static NetState netStatus(Context context) { NetState stateCode = NetState.NET_NO; ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo ni = cm.getActiveNetworkInfo(); if (ni != null && ni.isConnectedOrConnecting()) { switch (ni.getType()) { case ConnectivityManager.TYPE_WIFI: stateCode = NetState.NET_WIFI; break; case ConnectivityManager.TYPE_MOBILE: switch (ni.getSubtype()) { // 联通2g 电信2g 移动2g case TelephonyManager.NETWORK_TYPE_GPRS: case TelephonyManager.NETWORK_TYPE_CDMA: case TelephonyManager.NETWORK_TYPE_EDGE: case TelephonyManager.NETWORK_TYPE_1xRTT: case TelephonyManager.NETWORK_TYPE_IDEN: stateCode = NetState.NET_2G; break; // 电信3g case TelephonyManager.NETWORK_TYPE_EVDO_A: case TelephonyManager.NETWORK_TYPE_UMTS: case TelephonyManager.NETWORK_TYPE_EVDO_0: 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: stateCode = NetState.NET_3G; break; case TelephonyManager.NETWORK_TYPE_LTE: stateCode = NetState.NET_4G; break; default: stateCode = NetState.NET_UNKNOWN; } break; default: stateCode = NetState.NET_UNKNOWN; } } return stateCode; } }