【发布时间】:2018-11-13 11:12:10
【问题描述】:
我正在开发一个 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();
}
}
【问题讨论】:
-
你的代码没问题。也许您需要清理或失效并再次重新启动您的工作室?
-
更新你的安卓工作室到最新版本
-
@Umair 我尝试清理项目、重建甚至重新启动 Android Studio,但到目前为止没有任何效果。
-
@FredMaggiowski 有趣的是我在我的 AS 中复制/粘贴了您的代码,它工作正常,没有警告或错误消息:D 在这种情况下,MatPag 的答案是正确的,您将不得不取消警告
-
@Umair 听起来很有趣:|我猜代码是正确的,并且 AS 从周末开始仍然喝醉了......我正在尝试按照 Rahul 的建议更新它
标签: android android-studio deprecated