在设备上查找正确的Android版本
问题描述:
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.GINGERBREAD) {
//--incompatible code--
} else {
//--compatible code--
}
该条件会在姜饼上遇到不兼容的代码。 Build.VERSION.SDK_INT
代表实际的设备版本吗?或应用程序已编译的SDK版本?在设备上查找正确的Android版本
答
这是一个静态成员,它在应用第一次执行时被赋值。
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,那么这种方法也很有用。谢谢。 –
答
的问题是有2个代码GB:
Build.VERSION_CODES.GINGERBREAD
- > API 9
和
Build.VERSION_CODES.GINGERBREAD_MR1
- > API 10
如minSdkVersion
清单中的= 10然后API我应该使用Build.VERSION_CODES.GINGERBREAD_MR1
。
您希望将哪个版本作为兼容与不兼容代码的临界值? 2.3? 2.3.3? 3.0? –
它对我来说运行的很好。这表明我可以接受。如果我将姜饼替换成eclair,那么不兼容。 –
明白了。更新为答案。 –