安卓版本检查

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

【讨论】:

以上是关于安卓版本检查的主要内容,如果未能解决你的问题,请参考以下文章

oppo如何升级安卓版本?

原生安卓电视应用不显示

安卓手机无法下载软件

如何查看安卓系统版本?

安卓13进光速虚拟机显示异常

Facebook 安卓 sdk 3.0 SSO