Android 使用或覆盖了已过时的 API

编译时,出现类似提示:

注: 某些输入文件使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
注: /Volumes/MacSD/Android_Work_AS/sdk.v3new/AS/nBSDK/src/main/java/com/nbsdk/main/PassportGuestLogin.java使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

解决:

1.在在Module的build.gradle中,android节点下,配置如下信息:

    //配置这个并不是让你隐藏过时api,而是让过时api或者不合规矩的语法展现出来
    allprojects {
        gradle.projectsEvaluated {
            tasks.withType(JavaCompile) {
                options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
            }
        }
    }

2.运行Moudle,找出过时api或者异常语句逐个修改吧!以下是我的一些总结:

警告: [deprecation] Resources中的getColor(int)已过时

过时:getResources().getColor(R.color.colorAccent)
改为:ContextCompat.getColor(Context,R.color.colorAccent)

警告: [deprecation] Resources中的getDrawable(int)已过时

过时:sContext.getResources().getDrawable(R.drawable.btn)
改为:ContextCompat.getDrawable(sContext,R.drawable.btn)
警告: [deprecation] WebViewClient中的shouldOverrideUrlLoading(WebView,String)已过时

过时:shouldOverrideUrlLoading(WebView view, String url)
改为:
//我们可以通过request.getUrl()来获取url,当前感觉不要改还是好一些
shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
警告: [deprecation] PackageInfo中的versionCode已过时

过时:packageInfo.versionCode;
改为:packageInfo.getLongVersionCode();

需要注意,getLongVersionCode()是在API-28的时候被加入的。

所以要加版本判断,我这儿只是示例,自己的方法自己改哦:

    @SuppressWarnings("deprecation")
    public static int getVersionCode(Context context) {
        try {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
                return (int) context.getPackageManager().getPackageInfo(NBUtils.getBundleID(context), 0).getLongVersionCode();
            }
            return context.getPackageManager().getPackageInfo(NBUtils.getBundleID(context), 0).versionCode;
        } catch (Exception e) {
            return 0;
        }
    }

后续会逐渐补充~

欢迎打赏欢迎打赏欢迎打赏哈哈哈

你可能感兴趣的:(Android 使用或覆盖了已过时的 API)