我有一个应用程序,当它在API 18或19上运行时,它的行为有所不同。这不是问题,我知道它为什么会发生。
但是,我想编写一个代码来处理这两个版本。
有没有办法在运行时获取我的应用程序构建的API?具体来说,如果我使用这些API构建我的应用程序,我想得到18或19。
修改
这似乎是一个重复的问题。我认为BUILD_VERSION是另外的东西,因为,当我将两个版本编译为API 18和19,并打印版本时,我收到18.它看起来像另一个问题(虽然我指定了API 19,它是根据18编译的)。
我发现问题出在仿真器配置中。
答案 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)
检查此链接
所以你可以使用如下......
int thisDevicesApi =Build.VERSION.SDK_INT;
if (thisDevicesApi <=Build.VERSION_CODES.GINGERBREAD) {
//for example
//do something
}
答案 3 :(得分:0)
android.os.Build.VERSION.SDK_INT