2014-12-23 80 views
32

我不是新的Android和我很好用的版本处理,以及如何调节它,但是当我看到它this困扰我...的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_CODES.LOLLIPOP字段不存在...所以这是为什么在文档中推荐的解决方案?

我真的好奇我错过了什么?

+0

你应该试试这个:http://stackoverflow.com/a/3995388/1182823 –

+1

该变量可用,因为你是一个构建工具层面,它有它,无论设备水平的建设。这些都决心在编译时整理 – Shooky

+0

或这个:http://stackoverflow.com/a/3993940/1182823 –

回答

21

那么,你必须用最新的SDK版本编译你的项目。在编译过程中,您的常量将被替换为相应的整数值。不管你运行的是哪个版本的Android的应用程序 - 整数是相同

40

那么在这种情况下,使用此

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

+2

@Alexander Zhak答案是coreect ...除非编译为较低版本并希望处理更高版本,否则数值中没有任何意义 – TacB0sS

8

试试这个

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