即使检查正确,我仍然收到已弃用的 API 警告

Fre*_*ski 6 android deprecated android-studio

我正在开发一个 Android 项目,在代码中的某个时刻我需要获取设备序列号。

为了获得它,我曾经使用自 Android OBuild.SERIAL以来已被弃用的。为了避免出现问题,我开始使用,并创建了一个小方法来完成操作系统版本检查: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();
}
Run Code Online (Sandbox Code Playgroud)

注意:我没有检查要授予的权限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();
    }
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*Pag 1

你需要这样的东西:

@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();
}
Run Code Online (Sandbox Code Playgroud)

隐藏所有不正确的警告

  • 我相信抑制不是解决方案,任何警告总是有原因的:) (7认同)
  • 看着你的代码,我认为你做的一切都是正确的。我认为这是 AS 失败的案例之一。 (2认同)