Android版本检查

Android版本检查,android,android-version,Android,Android Version,我对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

我对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
}
在任何预棒棒糖的设备上,这一行都会使应用程序崩溃,因为Build.VERSION\u code.lollipop字段不存在。。。那么,为什么在文档中推荐的解决方案中会出现这种情况呢


我真的很想知道我遗漏了什么?

好吧,你必须用最新的SDK版本编译你的项目。编译期间,常量将替换为相应的整数值。无论在哪个版本的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
}

Build.VERSION\u CODES.LOLLIPOP=21

试试这个

 if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
       // Marshmallow+
   }else{
        //below Marshmallow
}
注意:Build.VERSION\u code.LOLLIPOP\u MR1==22

    Build.VERSION_CODES.M==23

回答有点晚,但是今天我在Android Studio 3.4.1上遇到了同样的问题

因此,解决办法是:

升级至最新的Android SDK

以及

在Marshmallow/Android 6 Build.VERSION_CODES.xxx之后,全名将替换为首字母和其他一些变体

所以,现在对于棉花糖,它将是: Build.VERSION_code.M

牛轧糖: Build.VERSION\u code.N

等等


您应该尝试以下操作:该变量可用,因为您使用的构建工具级别确实具有该变量,而不管设备级别如何。不管怎样,这些都在编译时解析为整数:我认为您要寻找的答案是这样,这样就不会崩溃,根据其他帖子,在编译代码时,您的静态变量将被替换为正确的整数。@Alexander Zhak answer is coreect。。。除非编译到较低的版本并希望处理较高的版本,否则数值没有意义。是否与相同
@RequiresApi(Build.VERSION\u CODES.LOLLIPOP)
@AsifMushtaq:参见此