在运行时检查Android构建项目目标API级别

时间:2014-01-07 13:07:59

标签: android android-build

我有一个应用程序,当它在API 18或19上运行时,它的行为有所不同。这不是问题,我知道它为什么会发生。

但是,我想编写一个代码来处理这两个版本。

有没有办法在运行时获取我的应用程序构建的API?具体来说,如果我使用这些API构建我的应用程序,我想得到18或19。

修改

这似乎是一个重复的问题。我认为BUILD_VERSION是另外的东西,因为,当我将两个版本编译为API 18和19,并打印版本时,我收到18.它看起来像另一个问题(虽然我指定了API 19,它是根据18编译的)。

我发现问题出在仿真器配置中。

4 个答案:

答案 0 :(得分:17)

我完全不明白你的问题。但是,如果您想检查您的应用正在使用哪个构建版本,然后采取相应措施,您可以使用以下内容。

if(Build.VERSION.SDK_INT == 18 ){
    // Do some stuff
}
else if (Build.VERSION.SDK_INT == 19) {
    // Do some stuff
}
else{
    // Do some stuff
}

答案 1 :(得分:2)

Android文档提供了一些处理此问题的how to load bitmaps effectively示例代码。

代码定义了类Utils中的静态方法,它在需要知道运行应用程序的平台时引用它。这样做的好处是您可以重用函数调用,而不是一遍又一遍地重写长条件语句。代码如下所示:

public static boolean hasFroyo() {
    // Can use static final constants like FROYO, declared in later versions
    // of the OS since they are inlined at compile time. This is guaranteed behavior.
    return Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO;
}

public static boolean hasGingerbread() {
    return Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD;
}

public static boolean hasHoneycomb() {
    return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB;
}

public static boolean hasHoneycombMR1() {
    return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1;
}

public static boolean hasJellyBean() {
    return Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
}

public static boolean hasKitKat() {
    return Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
}

答案 2 :(得分:0)

检查此链接

Build Version Codes

所以你可以使用如下......

int thisDevicesApi =Build.VERSION.SDK_INT;

if (thisDevicesApi <=Build.VERSION_CODES.GINGERBREAD) { 
     //for example
    //do something
}

答案 3 :(得分:0)

android.os.Build.VERSION.SDK_INT