Ответ 1
Ну, вы должны скомпилировать свой проект с последней версией SDK. Ваши константы заменяются соответствующими целыми значениями во время компиляции. Независимо от того, какая версия Android вы запускаете приложение on-integers, те же самые
Я не новичок в 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 не существует... так почему это в рекомендуемом решении в документации?
Мне действительно интересно, чего мне не хватает?
Ну, вы должны скомпилировать свой проект с последней версией SDK. Ваши константы заменяются соответствующими целыми значениями во время компиляции. Независимо от того, какая версия Android вы запускаете приложение on-integers, те же самые
В этом случае используйте этот
// 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
Попробуйте этот
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
Немного поздно, чтобы ответить, но сегодня я столкнулся с той же проблемой на 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