Подтвердить что ты не робот

Проверка версии Android

Я не новичок в Android, и я хорошо привык к обработке версии и ее условию, но когда я вижу это, это беспокоит меня...

// Check if we're running on Android 5.0 or higher
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    // Call some material design APIs here
} else {
    // Implement this feature without material design
}

На любом устройстве pre lollipop эта строка приведет к сбою приложения, потому что поле Build.VERSION_CODES.LOLLIPOP не существует... так почему это в рекомендуемом решении в документации?

Мне действительно интересно, чего мне не хватает?

4b9b3361

Ответ 1

Ну, вы должны скомпилировать свой проект с последней версией SDK. Ваши константы заменяются соответствующими целыми значениями во время компиляции. Независимо от того, какая версия Android вы запускаете приложение on-integers, те же самые

Ответ 2

В этом случае используйте этот

// Check if we're running on Android 5.0 or higher
if (Build.VERSION.SDK_INT >= 21) {
    // Call some material design APIs here
} else {
    // Implement this feature without material design
}

Build.VERSION_CODES.LOLLIPOP = 21

Ответ 3

Попробуйте этот

 if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
       // Marshmallow+
   }else{
        //below Marshmallow
}

Примечание: Build.VERSION_CODES.LOLLIPOP_MR1 == 22

    Build.VERSION_CODES.M==23

Ответ 4

Немного поздно, чтобы ответить, но сегодня я столкнулся с той же проблемой на Android Studio 3.4.1

Итак, обходной путь:

Обновите Android SDK до последней версии.

А также,

После Marshmallow/Android 6 Build.VERSION_CODES.xxx полные имена заменены на инициалы и некоторые другие варианты.

Итак, теперь для Зефира это будет: Build.VERSION_CODES.M

И для нуги: Build.VERSION_CODES.N

И так далее.

Узнайте больше о кодах версии сборки здесь: Android Developer Reference