Android|手机网络连接类型判断 2/3/4G网络 WiFi和无网络 工具类

public class NetUtils {


/**
* 判断当前网络类型-1为未知网络0为没有网络连接1网络断开或关闭2为以太网3为WiFi4为2G5为3G6为4G
*/
public static int getNetworkType(Context context) {
ConnectivityManager connectMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);


NetworkInfo networkInfo = connectMgr.getActiveNetworkInfo();
if (networkInfo == null) {
/** 没有任何网络 */
return 0;
}
if (!networkInfo.isConnected()) {
/** 网络断开或关闭 */
return 1;
}
if (networkInfo.getType() == ConnectivityManager.TYPE_ETHERNET) {
/** 以太网网络 */
return 2;
} else if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
/** wifi网络,当激活时,默认情况下,所有的数据流量将使用此连接 */
return 3;
} else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
/** 移动数据连接,不能与连接共存,如果wifi打开,则自动关闭 */
switch (networkInfo.getSubtype()) {
case TelephonyManager.NETWORK_TYPE_GPRS:
case TelephonyManager.NETWORK_TYPE_EDGE:
case TelephonyManager.NETWORK_TYPE_CDMA:
case TelephonyManager.NETWORK_TYPE_1xRTT:
case TelephonyManager.NETWORK_TYPE_IDEN:
/** 2G网络 */
case TelephonyManager.NETWORK_TYPE_UMTS:
case TelephonyManager.NETWORK_TYPE_EVDO_0:
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网络 */
case TelephonyManager.NETWORK_TYPE_LTE:
/** 4G网络 */
return 4;
}
}
/** 未知网络 */
return -1;
}
}

    推荐阅读