Android 针对较低SDK时的较高API调用

Android 针对较低SDK时的较高API调用,android,Android,我的应用程序支持minSdkVersion=10和targeting 16。如果特定设备支持API级别>=14的方法,我想调用它们。我可以在运行时检查运行的OS版本,以及是否调用更高的API方法,但当我指定min SDK版本时,仅存在于高于10的版本中的方法不可见。 有没有办法使用比minSdkVersion更高的API方法?您可以使用以下方法测试设备的API: if(android.os.Build.VERSION.SDK_INT >= 14) { // Do something

我的应用程序支持minSdkVersion=10和targeting 16。如果特定设备支持API级别>=14的方法,我想调用它们。我可以在运行时检查运行的OS版本,以及是否调用更高的API方法,但当我指定min SDK版本时,仅存在于高于10的版本中的方法不可见。
有没有办法使用比minSdkVersion更高的API方法?

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

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

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

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

这就是我提到的。我可以检查操作系统版本,但无法访问仅适用于高于10的SDK的方法//Do something将无法构建,因为只有SDK 14或更高版本中存在的方法对于SDK 10是未定义的。好的,下面是Android的博客条目,详细讨论了这个概念:向上投票。这篇博文让我明白了为什么更高的API方法在我的代码中是不可见的。答案是简单地以项目属性中最高的SDK为目标。