Android Q 模拟器 - Build.VERSION.SDK_INT returns 28

Android Q emulator - Build.VERSION.SDK_INT returns 28

 Build.VERSION.SDK_INT 

returns 在 Android Q 模拟器上 运行 时,28 而不是 29。我有什么想念的吗?我正在尝试专门为 Android Q 添加逻辑,但我不知道如何正确确定此版本。

app.gradle 文件包含

    targetSdkVersion = 'Q'
    compileSdkVersion = 'android-Q'

在 API 最终确定并正式成为 API 29(您将使用 compileSdkVersion 29 等)之前,您必须使用 BuildCompat.isAtLeastQ():

Checks if the device is running on a pre-release version of Android Q or newer.

Note: This method will return false on devices running release versions of Android. When Android Q is finalized for release, this method will be deprecated and all calls should be replaced with Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q.

请注意,Ian 的解决方案需要 AndroidX,并且只能从 Java/Kotlin 代码获得。

如果您的项目还没有为 AndroidX 做好准备,或者您需要资源或清单中的值,您可以使用 bool 资源:

  • 创建 res/values/bools.xml 并在其中放入 <bool name="isQ">false</bool>

  • 创建 res/values-v29/bools.xml 并把 <bool name="isQ">true</bool> 放在那里

此时,如果您引用 isQ 资源,您将在 Android Q 及更高版本的设备上获得 true,否则 false