Эмулятор Android Q - Build.VERSION.SDK_INT возвращает 28 - PullRequest
3 голосов
/ 06 апреля 2019
 Build.VERSION.SDK_INT 

возвращает 28 вместо 29 при работе в эмуляторе Android Q. Есть ли что-то, что я пропускаю? Я пытаюсь добавить логику специально для Android Q, но не знаю, как правильно определить эту версию.

Файл app.gradle содержит

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

Ответы [ 2 ]

9 голосов
/ 06 апреля 2019

Прежде чем API будет завершен и официально станет API 29 (где вы будете использовать compileSdkVersion 29 и т. Д.), Вы должны использовать BuildCompat.isAtLeastQ():

Проверяет, еслиустройство работает на предварительной версии Android Q или более поздней версии.

Примечание. Этот метод возвращает значение false на устройствах, работающих под управлением версий Android.Когда Android Q будет завершен для выпуска, этот метод устареет, и все вызовы должны быть заменены на Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q.

5 голосов
/ 09 апреля 2019

Обратите внимание, что решение Ian требует AndroidX и доступно только из кода Java / Kotlin.

Если ваш проект еще не готов для AndroidX или вам нужно значение в ресурсе или манифесте, вы можете использовать bool resources:

  • Создать res/values/bools.xml и положить туда <bool name="isQ">false</bool>

  • Создайте res/values-v29/bools.xml и поместите туда <bool name="isQ">true</bool>

На этом этапе, если вы обратитесь к ресурсу isQ, вы получите true на устройствах Android Q и выше, false в противном случае.

...