android 判断网络类型
时间: 2023-12-03 16:02:07 浏览: 139
在 Android 中,可以通过 ConnectivityManager 类来获取当前网络类型。以下是一个示例代码:
```java
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {
int type = activeNetworkInfo.getType();
if (type == ConnectivityManager.TYPE_WIFI) {
// 当前连接的是 WiFi 网络
} else if (type == ConnectivityManager.TYPE_MOBILE) {
int subType = activeNetworkInfo.getSubtype();
switch (subType) {
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:
case TelephonyManager.NETWORK_TYPE_IWLAN:
// 当前连接的是 4G 网络
break;
default:
// 当前连接的是其他类型的网络
break;
}
} else {
// 当前连接的是其他类型的网络
}
} else {
// 没有网络连接
}
```
需要注意的是,需要在 AndroidManifest.xml 文件中添加以下权限:
```xml
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
```
阅读全文