Android 提供了ConnectivityManager类,可以用来获取网络状态以及网络类型。
以下是使用ConnectivityManager检查网络类型的一种常见方法:
public String getNetworkType(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null) {
int type = networkInfo.getType();
switch (type) {
case ConnectivityManager.TYPE_WIFI:
return "WIFI";
case ConnectivityManager.TYPE_MOBILE:
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:
return "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:
return "3G";
case TelephonyManager.NETWORK_TYPE_LTE:
return "4G";
default:
return "Unknown";
}
default:
return "Unknown";
}
}
return "No Network Connection";
}
上述方法首先检查网络是否连接,然后检查网络类型。如果是移动网络,再检查移动网络的子类型(2G、3G、4G)。然后返回相应的网络类型。
注意这个方法需要在AndroidManifest.xml中声明访问网络状态的权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
在 Android 中,通过 ConnectivityManager 类可以获取当前网络的状态,包括是否连接,是 WIFI 还是数据流量等。以下是一种判断网络类型的方法:
首先,需要在 AndroidManifest.xml 中添加权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
然后,在代码中检查网络类型:
private String getNetworkType(Context context) {
// 获取手机所有连接管理对象
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager == null) {
return "NONE";
}
// 获取NetworkInfo对象
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {
// 判断NetworkInfo对象是否为空 和 是否已连接
if (activeNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
// 判断是否为WIFI网络
return "WIFI";
} else if (activeNetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
// 判断是否为数据流量网络
return "MOBILE";
}
}
return "NONE";
}
这个方法会返回当前的网络类型,”WIFI”表示WiFi网络,”MOBILE”表示移动数据,”NONE”表示没有网络。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/167674.html