Эмулятор Android Q - Build.VERSION.SDK_INT возвращает 28
Build.VERSION.SDK_INT
возвращает 28 вместо 29 при работе на эмуляторе Android Q. Есть что-то, что я пропускаю? Я пытаюсь добавить логику специально для Android Q, но я не знаю, как правильно определить эту версию.
файл app.gradle содержит
targetSdkVersion = 'Q'
compileSdkVersion = 'android-Q'
2 ответа
До того, как API будет завершен и официально станет API 29 (где вы будете использовать compileSdkVersion 29
и т. д.), вы должны использовать BuildCompat.isAtLeastQ()
:
Проверяет, работает ли устройство на предварительной версии Android Q или новее.
Примечание. Этот метод возвращает false на устройствах, работающих под управлением версий Android. Когда Android Q будет завершен к выпуску, этот метод устареет, и все вызовы должны быть заменены на
Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q
,
Обратите внимание, что решение Яна требует 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
ресурс, вы получите true
на устройствах Android Q и выше, false
иначе.