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

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

4

2 回答 2

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) {

因为主要版本之间可能存在次要版本。

于 2012-11-02T07:32:41.953 回答
1

问题是GB有2个代码:

Build.VERSION_CODES.GINGERBREAD-> API 9

Build.VERSION_CODES.GINGERBREAD_MR1-> API 10

作为minSdkVersionmanifest = 10 中的 API,那么我应该使用Build.VERSION_CODES.GINGERBREAD_MR1.

于 2012-11-02T07:32:40.830 回答