2012-07-31 29 views
10

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

回答

3

方法是无形的,不可访问,因为项目的目标SDK比SDK其方法是将要使用低。例如:如果你想使用来自API 14的方法Android项目目标SDK应该是至少14或甚至更好的最新(当前16)。这是显而易见的,但我错过了它。之后,Sam提供的解决方案正在使用中。

11

你可以利用这个测试设备的API:

从更高的API
if(android.os.Build.VERSION.SDK_INT >= 14) { 
    // Do something fancy 
} 
else { 
    // Do something regular 
} 
+0

这就是我提到的。我可以检查操作系统版本,但仅适用于SDK版本高于10的方法无法访问。 //做一些事情会失败build,因为只有SDK 14或更高版本存在的方法对于SDK 10是未定义的。 – Maxim 2012-07-31 22:42:04

+2

好的,这里是Android的博客条目,详细讨论这个概念:[如何让你的(杯)蛋糕和吃它也是](http://android-developers.blogspot.com/2010/07/how-to-have-your-cupcake-and-eat-it-too.html) – Sam 2012-07-31 23:07:58

+0

投票。博客文章让我知道为什么更高的API方法在我的代码中是不可见的。答案只是针对项目属性中的最高SDK。 – Maxim 2012-08-02 22:18:40

6

除了检查当前版本,您还应该将@SuppressLint("NewApi")添加到您的方法,以便编译器想要大声说出来。