if (Build.VERSION.SDK_INT > Build.VERSION_CODES.GINGERBREAD) {
//--incompatible code--
} else {
//--compatible code--
}
条件在Gingerbread上遇到不兼容的代码。 Build.VERSION.SDK_INT
代表实际的设备版本吗?或者应用程序编译的SDK版本?
答案 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) {
因为主要版本之间可能存在次要版本。
答案 1 :(得分:1)
问题是GB有2个代码:
Build.VERSION_CODES.GINGERBREAD
- > API 9
和
Build.VERSION_CODES.GINGERBREAD_MR1
- > API 10
作为清单中的minSdkVersion
API = 10然后我应该使用Build.VERSION_CODES.GINGERBREAD_MR1
。