【问题标题】:What happens when a call requires higher API, but my mobile has lower API level (Android app)当调用需要更高的 API,但我的手机具有更低的 API 级别(Android 应用程序)时会发生什么
【发布时间】:2020-04-20 04:08:36
【问题描述】:

这是否意味着较旧的 Android 手机将无法使用调用需要最低 API 级别的应用?

例如,我使用的是calendar.set(),它需要 API 级别 24(当前最低为 15);我的测试用手机是 Android 4.4.4,API 级别 19。我该怎么办?如果我使用模拟器测试和构建应用程序,完成后我是否可以在手机中使用该应用程序?

【问题讨论】:

    标签: java android api


    【解决方案1】:

    当调用需要更高的 API,但我的手机具有更低的 API 级别(Android 应用)时会发生什么

    您应该在 IDE 中收到有关该问题的警告,如果您进行该调用,您将在运行时崩溃。

    我正在使用 calendar.set(),它需要 API 级别 24

    set()Calendar 上有几个变体,例如this one。自 API 级别 1 以来,所有这些都已存在。

    也许你导入了错误的Calendar 类。

    我能做什么?

    如果你想在 API Level 19 上运行,你需要尝试使用 API Level 19 或之前定义的类和方法。对于您想在较新设备上使用的可选功能,请使用 Build.VERSION.SDK_INT 查看设备正在运行的 API 级别,并围绕在旧设备上无法使用的任何功能进行分支。

    【讨论】:

    • 我只是在关注 Youtube 上的教程,试图获得一些制作应用程序的基本知识,在这种情况下,应用程序是一个警报。大多数老款手机都可以运行闹钟应用,这有点令人震惊,如果一个超级初级的应用不能在老款手机上运行,​​那就太奇怪了。
    【解决方案2】:

    是的,如果您的应用调用不受支持的方法,它将会崩溃。

    您必须创建一个方法来检查这种情况并以编程方式处理它。

    此 SO 显示如何获取版本:Getting device os version in Android programmatically

    您可以在较旧的设备上运行该应用,但遇到不支持代码时会崩溃。

    【讨论】:

      【解决方案3】:

      如果该行运行,它会引发异常。任何高于最低要求的 API 调用都需要受到版本检查的保护,并且该功能未在较低 API 上公开或以不同的方式完成。

      【讨论】:

        【解决方案4】:

        是的,设备/模拟器的 API 必须至少是 Android docs 中严格提到的最低 API(本地 build.gradle 中的 minSdkVersion):

        minSdkVersion:一个整数,指定应用程序运行所需的最低 API 级别。如果系统的 API Level 低于此属性中指定的值,Android 系统将阻止用户安装应用程序。您应该始终声明此属性。

        【讨论】:

          【解决方案5】:

          是的,兄弟。它根本不起作用。也许会给你带来麻烦。

          【讨论】:

            猜你喜欢
            • 2015-08-31
            • 2018-02-25
            • 2013-12-24
            • 1970-01-01
            • 2013-04-21
            • 2016-02-14
            • 1970-01-01
            • 2011-04-28
            • 1970-01-01
            相关资源
            最近更新 更多