if (Build.VERSION.SDK_INT > Build.VERSION_CODES.GINGERBREAD) {
//--incompatible code--
} else {
//--compatible code--
}
该条件在 Gingerbread 上遇到不兼容的代码。是否Build.VERSION.SDK_INT
代表实际设备版本?还是编译应用程序的 SDK 版本?
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.GINGERBREAD) {
//--incompatible code--
} else {
//--compatible code--
}
该条件在 Gingerbread 上遇到不兼容的代码。是否Build.VERSION.SDK_INT
代表实际设备版本?还是编译应用程序的 SDK 版本?
这是一个静态成员,在应用程序第一次执行时被赋值。
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) {
因为主要版本之间可能存在次要版本。
问题是GB有2个代码:
Build.VERSION_CODES.GINGERBREAD
-> API 9
和
Build.VERSION_CODES.GINGERBREAD_MR1
-> API 10
作为minSdkVersion
manifest = 10 中的 API,那么我应该使用Build.VERSION_CODES.GINGERBREAD_MR1
.