java - 将目标 sdk 更新到 29 后导入已弃用的警告

标签 java android deprecated

build.gradle 中将编译和 targetSdkVersion 更新为“29”后 我收到弃用警告:

warning: [deprecation] NetworkInfo in android.net has been deprecated
import android.net.NetworkInfo;
                  ^

因此构建失败。但我使用网络信息来与 API 版本 16-29 兼容。我应该如何处理针对 api“29”及以上版本的已弃用导入?

最佳答案

我找到了这个问题的解决方案。您必须这样编写方法。

@SuppressWarnings("deprecation")
public boolean isConnected() {
        ConnectivityManager cm = (ConnectivityManager) AnkiDroidApp.getInstance().getApplicationContext()
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        if (cm == null) {
            return false;
        }
        /* NetworkInfo is deprecated in API 29 so we have to check separately for higher API Levels */
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
            Network network = cm.getActiveNetwork();
            if (network == null) {
                return false;
            }
            NetworkCapabilities networkCapabilities = cm.getNetworkCapabilities(network);
            if (networkCapabilities == null) {
                return false;
            }
            boolean isInternetSuspended = !networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED);
            return networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
                    && networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
                    && !isInternetSuspended;
        } else {
            android.net.NetworkInfo networkInfo = cm.getActiveNetworkInfo();
            return networkInfo != null && networkInfo.isConnected();
        }
    }

记住抑制警告。

关于java - 将目标 sdk 更新到 29 后导入已弃用的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58975139/

相关文章:

Java 数据包嗅探器

Android:是否可以在屏幕上同时创建底部和顶部选项卡?

java - 仅请求 Android Marshmallow 的运行时权限?

java - 在 udp 套接字上设置源端口

java - Oracle 数据库 SELECT ... FOR UPDATE 自动提交

android - 将 Activity 实例传递给类是否可以?

android -/assets/containers 中未找到容器 Assets 。不会安装跟踪代码管理器的事件处理程序(未加载容器)

python - 从 Pandas 到 Statsmodels 的 OLS 中弃用的滚动窗口选项

html - <div align ="center"> 的 CSS 替换

c++ - 错误 : strcpy was not declared in this scope