2012-11-02 22 views
0
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.GINGERBREAD) { 
     //--incompatible code-- 
    } else { 
     //--compatible code-- 
    } 

该条件会在姜饼上遇到不兼容的代码。 Build.VERSION.SDK_INT代表实际的设备版本吗?或应用程序已编译的SDK版本?在设备上查找正确的Android版本

+0

您希望将哪个版本作为兼容与不兼容代码的临界值? 2.3? 2.3.3? 3.0? –

+0

它对我来说运行的很好。这表明我可以接受。如果我将姜饼替换成eclair,那么不兼容。 –

+0

明白了。更新为答案。 –

回答

2

这是一个静态成员,它在应用第一次执行时被赋值。

public static final int SDK_INT = SystemProperties.getInt("ro.build.version.sdk", 0); 

的SystemProperties.getInt()成员函数目标设备上运行,当您编译应用程序没有确定。

根据官方指南,你应该使用> =的替代>当检测API版本,即

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 

,因为有可能是主版本之间的次要版本。

+0

取决于什么打破了兼容性,如果它独占于较新的API,那么这种方法也很有用。谢谢。 –

1

的问题是有2个代码GB:

Build.VERSION_CODES.GINGERBREAD - > API 9

Build.VERSION_CODES.GINGERBREAD_MR1 - > API 10

minSdkVersion清单中的= 10然后API我应该使用Build.VERSION_CODES.GINGERBREAD_MR1