获取当前网络类型可以使用 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) {
        // 蓝牙共享网络
    }
}

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

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;
}
Android 获取当前网络类型:WIFI、4G、蓝牙共享网络

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

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