即使检查正确,我仍然收到弃用 API 警告
I keep getting deprecated API warning even with correct check
我正在做一个 Android 项目,在我的代码中的某个时刻我需要获取设备序列号。
为了得到它,我曾经使用 Build.SERIAL
,它自 Android O 以来已被弃用。为了避免出现问题,我开始使用 Build.getSerial()
,并创建了一个小方法来结束 OS 版本检查:
private static String getSerial() throws SecurityException {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.O) {
return Build.SERIAL;
}
return Build.getSerial();
}
注意:我没有检查要授予的权限 READ_PHONE_STATE
(getSerial()
方法需要),因为我在一开始就这样做并确保我已经拥有它在进入这个方法之前。
问题是,无论我如何写下 Android OS 检查,我都会收到已弃用的 API 警告。
我尝试了以下方法,对于所有可能的版本,我都在 Build.SERIAL
上收到警告
private static String getSerial() throws SecurityException {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
return Build.getSerial();
}
return Build.SERIAL;
}
private static String getDeviceUDI() throws SecurityException {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
return Build.getSerial();
} else {
return Build.SERIAL;
}
}
private static String getDeviceUDI() throws SecurityException {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.O) {
return Build.SERIAL;
} else {
return Build.getSerial();
}
}
你需要这样的东西:
@SuppressLint("HardwareIds")
@SuppressWarnings("deprecation")
private static String getSerial() throws SecurityException {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.O) {
return Build.SERIAL;
}
return Build.getSerial();
}
隐藏所有不正确的警告
这很烦人,但我只发现这样的东西可以工作:
@TargetApi(BUILD.VERSION_CODES.N)
private static String getDeprecatedSerial() {
return BUILD.SERIAL;
}
private static String getSerial() throws SecurityException {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.O) {
return getDeprecatedSerial();
}
return Build.getSerial();
}
这样您就不会收到有关 API 级别的弃用警告 API 并且您不会抑制所有弃用警告。
我正在做一个 Android 项目,在我的代码中的某个时刻我需要获取设备序列号。
为了得到它,我曾经使用 Build.SERIAL
,它自 Android O 以来已被弃用。为了避免出现问题,我开始使用 Build.getSerial()
,并创建了一个小方法来结束 OS 版本检查:
private static String getSerial() throws SecurityException {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.O) {
return Build.SERIAL;
}
return Build.getSerial();
}
注意:我没有检查要授予的权限 READ_PHONE_STATE
(getSerial()
方法需要),因为我在一开始就这样做并确保我已经拥有它在进入这个方法之前。
问题是,无论我如何写下 Android OS 检查,我都会收到已弃用的 API 警告。
我尝试了以下方法,对于所有可能的版本,我都在 Build.SERIAL
private static String getSerial() throws SecurityException {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
return Build.getSerial();
}
return Build.SERIAL;
}
private static String getDeviceUDI() throws SecurityException {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
return Build.getSerial();
} else {
return Build.SERIAL;
}
}
private static String getDeviceUDI() throws SecurityException {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.O) {
return Build.SERIAL;
} else {
return Build.getSerial();
}
}
你需要这样的东西:
@SuppressLint("HardwareIds")
@SuppressWarnings("deprecation")
private static String getSerial() throws SecurityException {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.O) {
return Build.SERIAL;
}
return Build.getSerial();
}
隐藏所有不正确的警告
这很烦人,但我只发现这样的东西可以工作:
@TargetApi(BUILD.VERSION_CODES.N)
private static String getDeprecatedSerial() {
return BUILD.SERIAL;
}
private static String getSerial() throws SecurityException {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.O) {
return getDeprecatedSerial();
}
return Build.getSerial();
}
这样您就不会收到有关 API 级别的弃用警告 API 并且您不会抑制所有弃用警告。