在设备上找到正确的Android版本

时间:2012-11-02 07:21:45

标签: android

    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.GINGERBREAD) {
        //--incompatible code--
    } else {
        //--compatible code--
    }

条件在Gingerbread上遇到不兼容的代码。 Build.VERSION.SDK_INT代表实际的设备版本吗?或者应用程序编译的SDK版本?

2 个答案:

答案 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