Android version check

你离开我真会死。 提交于 2019-12-18 11:38:35

问题


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?


回答1:


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




回答2:


Well in that case use this

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


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



回答4:


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



来源:https://stackoverflow.com/questions/27623943/android-version-check

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!