Эмулятор 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 иначе.

Другие вопросы по тегам