Android version check

AndroidAndroid Version

Android Problem Overview


I'm not new to Android and I'm well used to the version handling and how to condition it, but when I see this it troubles me...

// 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
}

On any device pre lollipop this line would crash the app because the Build.VERSION_CODES.LOLLIPOP field does not exists... so why is this in the recommended solution in the documentation?

I'm really wondering what am I missing?

Android Solutions


Solution 1 - Android

Well in that case use this

// 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
}

Build.VERSION_CODES.LOLLIPOP = 21

Solution 2 - Android

Well, you must compile your project with the latest SDK version. Your constants are replaced with corresponding integer values during compilation. No matter what version of Android you run the application on - integers are the same

Solution 3 - Android

Try this one

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

> Note: Build.VERSION_CODES.LOLLIPOP_MR1==22 >
> Build.VERSION_CODES.M==23

Solution 4 - Android

Bit a late to answer, but, today I encountered with the same issue on Android Studio 3.4.1

So the workaround is:

Upgrade to the latest Android SDK.

And,

After Marshmallow/Android 6 Build.VERSION_CODES.xxx full names are replaced with initials and some other variations.

So, now for Marshmallow, it will be: Build.VERSION_CODES.M

And for Nougat: Build.VERSION_CODES.N

And so on.

Read more about the build version codes here: Android Developer Reference

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionTacB0sSView Question on Stackoverflow
Solution 1 - AndroidRohit5k2View Answer on Stackoverflow
Solution 2 - AndroidAlexander ZhakView Answer on Stackoverflow
Solution 3 - AndroidGautamView Answer on Stackoverflow
Solution 4 - AndroidbitcolonView Answer on Stackoverflow