【问题标题】: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 字段不存在......那么为什么在文档中推荐的解决方案中会出现这种情况?

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

【问题讨论】:

标签: android android-version


【解决方案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:看到这个stackoverflow.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

      【讨论】:

        猜你喜欢
        • 2017-11-15
        • 2018-11-24
        • 2011-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多