刚好今天用到,就放着给大家一起用下,实在是这时候网上不好找,也是去developer上面找文档的
public static int getCurrentNetType(Context context) {
int type = 1;//默认wifi
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
if (info == null) {
type = 1;//wifi
} else if (info.getType() == ConnectivityManager.TYPE_WIFI) {
type = 1;//wifi
} else if (info.getType() == ConnectivityManager.TYPE_MOBILE) {
int subType = info.getSubtype();
if (subType == TelephonyManager.NETWORK_TYPE_GSM ||
subType == TelephonyManager.NETWORK_TYPE_GPRS ||
subType == TelephonyManager.NETWORK_TYPE_CDMA ||
subType == TelephonyManager.NETWORK_TYPE_EDGE ||
subType == TelephonyManager.NETWORK_TYPE_1xRTT ||
subType == TelephonyManager.NETWORK_TYPE_IDEN
) {
type = 2;//2G
} else if (
subType == TelephonyManager.NETWORK_TYPE_TD_SCDMA ||
subType == TelephonyManager.NETWORK_TYPE_EVDO_A ||
subType == TelephonyManager.NETWORK_TYPE_UMTS ||
subType == TelephonyManager.NETWORK_TYPE_EVDO_0 ||
subType == TelephonyManager.NETWORK_TYPE_HSDPA ||
subType == TelephonyManager.NETWORK_TYPE_HSUPA ||
subType == TelephonyManager.NETWORK_TYPE_HSPA ||
subType == TelephonyManager.NETWORK_TYPE_EVDO_B||
subType == TelephonyManager.NETWORK_TYPE_EHRPD||
subType == TelephonyManager.NETWORK_TYPE_HSPAP
) {
type = 3;//3G
} else if (subType == TelephonyManager.NETWORK_TYPE_IWLAN ||
subType == TelephonyManager.NETWORK_TYPE_LTE) {// LTE是3g到4g的过渡,是3.9G的全球标准
type = 4;//4G
} else if(subType == TelephonyManager.NETWORK_TYPE_NR){ //api 29 时生效 为5G网络类型 值为20也是一样
type = 5;//5G
}
}
Logger.e("type","type====================="+type);
return type;
}
有兴趣的可以自己去看最后在附上developer查API地址接:
https://developer.android.google.cn/reference/android/telephony/TelephonyManager.html?hl=en