Android版本检查

Tac*_*0sS 50 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 material design
}
Run Code Online (Sandbox Code Playgroud)

在任何设备前棒棒糖此行将崩溃的应用程序,因为Build.VERSION_CODES.LOLLIPOP字段不存在......所以这是为什么在文档中推荐的解决方案?

我真的很想知道我错过了什么?

Roh*_*5k2 56

那么在这种情况下使用它

// 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
}
Run Code Online (Sandbox Code Playgroud)

Build.VERSION_CODES.LOLLIPOP = 21

  • @Alexander Zhak回答是核心...除非你编译成较低版本并想要处理更高版本,否则数值没有意义 (2认同)

Ale*_*hak 28

那么,您必须使用最新的SDK版本编译您的项目.在编译期间,常量将替换为相应的整数值.无论你在哪个版本的Android上运行应用程序 - 整数都是一样的


Gau*_*tam 15

试试这个吧

 if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
       // Marshmallow+
   }else{
        //below Marshmallow
}
Run Code Online (Sandbox Code Playgroud)

注意:Build.VERSION_CODES.LOLLIPOP_MR1 == 22

    Build.VERSION_CODES.M==23
Run Code Online (Sandbox Code Playgroud)