【问题标题】:Higher API calls when lower SDK targeted以较低的 SDK 为目标时较高的 API 调用
【发布时间】:2012-07-31 22:30:16
【问题描述】:

我的应用支持 minSdkVersion=10 和目标 16。如果特定设备支持,我想调用特定于 API 级别 >= 14 的方法。我可以在运行时检查正在运行的操作系统版本以及是否调用更高的 API 方法,但是当我指定最小 SDK 版本时,仅存在于高于 10 的版本中的方法不可见。 有没有办法使用比 minSdkVersion 更高的 API 方法?

【问题讨论】:

    标签: android


    【解决方案1】:

    您可以使用以下方法测试设备的 API:

    if(android.os.Build.VERSION.SDK_INT >= 14) {
        // Do something fancy
    }
    else {
        // Do something regular
    }
    

    【讨论】:

    • 这就是我提到的。我可以检查操作系统版本,但仅适用于高于 10 的 SDK 的方法无法访问。 //做某事会导致构建失败,因为只存在于 SDK 14 或更高版本的方法对于 SDK 10 是未定义的。
    • 好的,这是来自 Android 的博客文章,详细讨论了这个概念:How to have your (Cup)cake and eat it too
    • 赞成。博客文章让我了解了为什么在我的代码中不可见更高的 API 方法。答案只是针对项目属性中最高的 SDK。
    【解决方案2】:

    除了检查当前版本之外,您还应该将@SuppressLint("NewApi")添加到您的方法中,以便编译器对其大喊大叫。

    【讨论】:

      【解决方案3】:

      来自更高 API 的方法是不可见和不可访问的,因为项目的目标 SDK 低于将要使用的方法的 SDK。例如:如果您想使用 API 14 中的方法,Android 项目目标 SDK 至少应为 14 甚至更好(当前为 16)。这很明显,但我错过了。之后 Sam 给出的解决方案正在使用中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-25
        • 1970-01-01
        • 1970-01-01
        • 2021-06-30
        相关资源
        最近更新 更多