java - MainActivity.java:使用或覆盖已弃用的 API。使用 -Xlint:deprecation 重新编译以获取详细信息
问题描述
我不知道如何解决这个问题。
当我尝试将文件夹编译为 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);
}
}
}
解决方案
欢迎来到 StackOverflow!
在您的代码中,在版本检查之后,您尝试使用 设置窗口状态颜色getResources().getColor()
,这已经被弃用了几年。
您可以使用ContextCompat来实现:ContextCompat.getColor(context, R.color.color_name)
.
您应该更改R.color.color_name
您想要的资源(在您的情况下应该是R.color.statusBarColor
)并传递正确的上下文(应该是getApplicationContext()
)。
更多信息可以在这篇文章中找到,永远不要忘记伟大的谷歌关于 Android 的文档。
推荐阅读
- c# - 如何在视频位于 Assets 文件夹之前统一引用视频播放器 URL?
- arrays - 如何从 Vlookup 中返回多列和多行
- ruby-on-rails-3 - 在 Ruby 1.8.7 中,为什么 IRB 中的 JSON 语法会引发语法,但在 Rails 3.2.22.1 控制台中却没有?
- php - 查找过去
可能存在或不存在的标签的PHP 正则表达式 - c# - C# GroupBy 动态值 - 未知参数 - C# lambda GroupBy EqualityComparer
- c - strstr not working within the loop as intended
- java - MongoOperations - upsert/findAndModify 删除 mongo 中的所有字段
- node.js - 未收到发送到房间的 Socket 消息但广播正常
- amazon-web-services - AWS S3 Listing API - 如何使用特定前缀列出 S3 Bucket 中的所有内容
- python - 代码没有找到 matplotlib.pyplot 模块