较低的SDK目标时调用较高的API

Max*_*xim 10 android

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

Sam*_*Sam 11

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

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

  • 好的,这是来自Android的博客条目,详细讨论了这个概念:[如何拥有你的(杯子)蛋糕并且也吃它](http://android-developers.blogspot.com/2010/07/how-to-have - 您 - 蛋糕和吃-IT-too.html) (2认同)

she*_*hem 6

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


Max*_*xim 3

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