android - Android P API 28 中弃用的 ConnectivityManager.TYPE_WIFI 的替代方案是什么?

标签 android android-sdk-manager android-api-levels

ConnectivityManager.TYPE_WIFI在 Android P API 28 中已弃用。此外,NetworkInfo#getTypeConnectivityManager.TYPE_MOBILE的也已弃用。

那么,他们的替代方案是什么?我知道我们必须使用 NetworkCapabilities 类中的方法。但是,我无法将所有内容合并到一个地方,例如如何在 NetworkCapabilities 类中执行 getType() 以及如何在其上添加 WIFI 和蜂窝数据检查?

请协助。

最佳答案

您可以使用下面的代码 fragment 来检查您是否有 Wifi 连接或蜂窝网络:

ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
    Network network = connectivityManager.getActiveNetwork();
    NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network);
    return capabilities != null && (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR));
}

关于android - Android P API 28 中弃用的 ConnectivityManager.TYPE_WIFI 的替代方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52816443/

相关文章:

java - 如何以编程方式确定android是否连接到wifi?

android - Android Chrome 上的音频标签错误(?)

android - 使用 Xamarin 在 Android WebView 中进行地理定位

ubuntu-18.04 - 在 Ubuntu 18.04 上安装 Android SDK 管理器

cmake - 为什么android ndk独立工具链不支持带有api 19的arm64但android ndk cmake支持

android - 如何在最新 API 级别的服务中运行我的倒计时器?

java - 在 Android 中膨胀 ListView 页脚的正确方法是什么?

android - 如何使用主机的模拟器使 Flutter 在 WSL2 上工作?

java - Android Studio 在没有 sdkmanager 的情况下安装

android - API 23中的Android权限正常权限和危险权限列表?