获取当前网络类型可以借助Android系统提供的ConnectivityManager类,使用getActiveNetworkInfo()方法获取当前网络信息,然后判断网络类型即可。

示例代码如下:

ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {
    if (activeNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
        // WIFI网络
    } else if (activeNetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
        // 移动网络,可以通过TelephonyManager获取具体的网络类型
    } else if (activeNetworkInfo.getType() == ConnectivityManager.TYPE_BLUETOOTH) {
        // 蓝牙共享网络
    }
}

其中,如果当前网络类型为移动网络,可以通过TelephonyManager的getNetworkType()方法获取具体的网络类型,例如:

TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
int networkType = telephonyManager.getNetworkType();
switch (networkType) {
    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网络
        break;
    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网络
        break;
    case TelephonyManager.NETWORK_TYPE_LTE:
        // 4G网络
        break;
    default:
        // 其他网络
        break;
}
``

原文地址: http://www.cveoy.top/t/topic/hvP8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录