我正在开发一个 Android 项目,在我的代码中的某个时刻,我需要获取设备序列号。
为了得到它,我曾经使用 Build.SERIAL
自 Android O 以来已被弃用。为了避免出现问题,我开始使用 Build.getSerial()
,并创建了一个包含操作系统版本检查的小方法:
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 操作系统检查,我都会不断收到已弃用的 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();
}
隐藏所有不正确的警告
关于android - 即使检查正确,我也会不断收到弃用的 API 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50675122/