要获取Android 10及以下版本的当前网络类型,可以使用ConnectivityManager类。
以下是一个示例代码,演示如何获取当前网络类型:
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.os.Build;
public class NetworkUtils {
public static String getCurrentNetworkType(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
NetworkCapabilities networkCapabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
if (networkCapabilities != null) {
if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
return "WiFi";
} else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
return "Mobile Data";
}
}
} else {
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {
int type = activeNetworkInfo.getType();
if (type == ConnectivityManager.TYPE_WIFI) {
return "WiFi";
} else if (type == ConnectivityManager.TYPE_MOBILE) {
return "Mobile Data";
}
}
}
return "Unknown";
}
}
在您的应用程序中,您可以通过调用NetworkUtils.getCurrentNetworkType(context)
来获取当前网络类型。
请注意,从Android 10开始,使用getActiveNetworkInfo()
方法已被弃用,应使用getNetworkCapabilities()
方法。
另外,要确保在AndroidManifest.xml文件中添加以下权限:
这样您的应用程序将能够访问网络状态信息。