安卓版本检查
Posted
技术标签:
【中文标题】安卓版本检查【英文标题】:Android version check 【发布时间】:2015-02-21 19:21:57 【问题描述】:我对 android 并不陌生,而且我已经习惯了版本处理以及如何调整它,但是当我看到 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 字段不存在......那么为什么在文档中推荐的解决方案中会出现这种情况?
我真的很想知道我错过了什么?
【问题讨论】:
你应该试试这个:***.com/a/3995388/1182823 该变量可用,因为您正在使用构建工具级别进行构建,无论设备级别如何,该级别都具有它。无论如何,这些都在编译时解析为整数 或者这个:***.com/a/3993940/1182823 我认为您正在寻找的答案是***.com/a/26941714/2778376 所以这不会崩溃,根据其他帖子,您的静态变量将在编译代码时替换为正确的整数。 【参考方案1】:那么在这种情况下使用这个
// 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
【讨论】:
@Alexander Zhak 的回答是一致的......除非您编译到较低版本并想要处理更高版本,否则数值没有意义 是一样的吗?@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
@AsifMushtaq:看到这个***.com/questions/40007365/…【参考方案2】:
那么,您必须使用最新的 SDK 版本编译您的项目。在编译期间,您的常量将替换为相应的整数值。无论您在哪个版本的 Android 上运行应用程序 - 整数都是相同的
【讨论】:
【参考方案3】:试试这个
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
【讨论】:
【参考方案4】:回答有点晚了,但是,今天我在 Android Studio 3.4.1 上遇到了同样的问题
所以解决方法是:
升级到最新的 Android SDK。
还有,
在 Marshmallow/Android 6 Build.VERSION_CODES.xxx 之后,全名被替换为首字母和其他一些变体。
所以,现在对于 Marshmallow,它将是: Build.VERSION_CODES.M
对于牛轧糖: Build.VERSION_CODES.N
等等。
Read more about the build version codes here: Android Developer Reference
【讨论】:
以上是关于安卓版本检查的主要内容,如果未能解决你的问题,请参考以下文章