【问题标题】:MainActivity.java: uses or overrides a deprecated API. Recompile with -Xlint:deprecation for detailsMainActivity.java:使用或覆盖已弃用的 API。使用 -Xlint:deprecation 重新编译以获取详细信息
【发布时间】:2018-12-27 14:40:38
【问题描述】:

我不知道如何解决这个问题。
当我尝试将文件夹编译为 APK 文件时,有消息说

MainActivity.java 使用或覆盖已弃用的 API。

我使用的是 Android Studio 版本 3.2.0 和 Java 版本 8。我尝试了所有方法,但还是不行。我也在网上搜索过,但我找不到答案。

package com.kakao.talk.theme.apeach;

import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;

public class MainActivity extends Activity {
private static final String KAKAOTALK_SETTINGS_THEME_URI = 
"kakaotalk://settings/theme/";
private static final String MARKET_URI = "market://details?id=";
private static final String KAKAO_TALK_PACKAGE_NAME = "com.kakao.talk";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        try {
            Window window = this.getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            window.setStatusBarColor(getResources().getColor(R.color.statusBarColor));
        } catch (Throwable ignored) {
        }
    }

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        try {
            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
        } catch (Throwable ignored) {
        }
    }

    final Button applyButton = (Button) findViewById(R.id.apply);
    applyButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            final Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse(KAKAOTALK_SETTINGS_THEME_URI + getPackageName()));
            startActivity(intent);
            finish();
        }
    });

    final Button installButton = (Button) findViewById(R.id.market);
    installButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(MARKET_URI + KAKAO_TALK_PACKAGE_NAME));
            startActivity(intent);
            finish();
        }
    });

    try {
        getPackageManager().getPackageInfo(KAKAO_TALK_PACKAGE_NAME, 0);
        applyButton.setVisibility(View.VISIBLE);
        installButton.setVisibility(View.GONE);
    } catch (NameNotFoundException e) {
        applyButton.setVisibility(View.GONE);
        installButton.setVisibility(View.VISIBLE);
    }
}

}

【问题讨论】:

  • 您好,usser1222,欢迎来到 StackOverflow!请注意,即使您获得该日志,APK(应该)仍会被编译。 (这应该是一个警告)您是否也可以尝试将 -Xlint:deprecation 标志传递给您的 Gradle 命令?
  • 我为你更改了标签,N.B. Java 和 JavaScript 是两个非常非常不同的东西。
  • 我忽略了它并尝试将其下载到我的手机上,但它不起作用(出于某种原因......)“将 Xlint:deprecation 标志传递给 Gradle 命令”是什么意思?很抱歉 :( 我对这一切都是新手,我迷路了 *顺便说一句,非常感谢您更改标签!

标签: java android-studio


【解决方案1】:

欢迎使用 StackOverflow!

在您的代码中,在版本检查之后,您尝试使用 getResources().getColor() 设置窗口状态颜色,这已经被弃用了几年。

您可以使用ContextCompat 来实现此目的:ContextCompat.getColor(context, R.color.color_name)

您应该为所需资源更改R.color.color_name(在您的情况下应该是R.color.statusBarColor)并传递正确的上下文(应该是getApplicationContext())。

更多信息可以在this post上找到,永远不要忘记great google's documentation on Android

【讨论】:

  • 当我用 ContextCompat.getColor(context, R.color.color_name) 替换 getResources().getColor() 时,我有错误报告他们找不到符号变量 color_name 等...应该我愿意吗?
  • “R.color.statusBarColor”部分的工作就像一个魅力,但“ContextCompat”和“getTargetContext()”不起作用:(我使用的是3.2.0版本的Android Studio..应该我下载最新版本以防万一这个版本过时了?
  • 没有。它应该适用于 3.2.0。您是否正确导入了 ContextCompat?
  • 你的行应该是这样结束的:window.setStatusBarColor(ContextCompat.getColor(this.getApplicationContext(), R.color.statusBarColor)
  • 当我用 ContextCompat 替换它时,它显示“编译失败;有关详细信息,请参阅编译器错误输出。”
猜你喜欢
  • 2018-05-05
  • 1970-01-01
  • 2022-10-25
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
  • 1970-01-01
  • 2021-02-28
  • 2021-06-24
相关资源
最近更新 更多