Android Q模拟器-Build.VERSION.SDK_INT返回28

时间:2019-04-06 02:09:50

标签: android sdk target-sdk targetsdkversion androidq

 Build.VERSION.SDK_INT 
在Android Q模拟器上运行时,

返回28而不是29。我有什么想念的吗?我正在尝试添加专门针对Android Q的逻辑,但我不知道如何正确确定此版本。

app.gradle文件包含

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

2 个答案:

答案 0 :(得分:7)

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

  

检查设备是否在Android Q的预发行版本上运行。

     

注意:此方法在运行Android发行版的设备上将返回false。最终确定要发布的Android Q后,该方法将被弃用,所有调用应替换为Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q

答案 1 :(得分:4)

请注意,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