如何使ICS应用程序(API 15)与Jellybean(API 16)兼容?

时间:2012-09-13 23:20:07

标签: android compatibility android-4.0-ice-cream-sandwich android-4.2-jelly-bean eclipse-adt

我正在为Android构建应用程序,但我想这样做,所以我至少可以使用4.0.3功能。我目前并不担心为那些使用4.0及以下版本的用户发布这个版本。

基本上,我的问题如下:

  • 如果我已经有一个项目,其中Eclipse中的基本最小SDK设置为4.0.3,并且max设置为相同,我可以更改最大值吗?如果是这样,怎么样?

  • 4.0.3应用程序是否与4.1应用程序兼容?如果没有,那么有什么好处呢?如果我在C / C ++中这样做,答案将是预处理器指令(例如,#ifdef ANDROID_OS_4_1 //do stuff for 4.1 only #endif)。我知道在Java中没有这样的等价物,更不用说Android了。

2 个答案:

答案 0 :(得分:4)

要针对JellyBean构建,您可以使用AndroidManifest中的<uses-sdk />标记(位于<application />标记上方):

<uses-sdk android:minSdkVersion="15" android:targetSdkVersion="16"/>

通过使用16的targetSdkVersion(JellyBean),您可以访问所有新API

在运行时,您可以检查运行该应用程序的Android版本,并根据该版本执行操作。我在我的应用程序中使用实用程序类来执行此操作:

public class Api {
    public static final int LEVEL = Build.VERSION.SDK_INT;
    public static final int FROYO = Build.VERSION_CODES.FROYO;
    public static final int GINGERBREAD = Build.VERSION_CODES.GINGERBREAD;
    public static final int GINGERBREAD_MR1 = Build.VERSION_CODES.GINGERBREAD_MR1;
    public static final int HONEYCOMB = Build.VERSION_CODES.HONEYCOMB;
    public static final int ICS = Build.VERSION_CODES.ICE_CREAM_SANDWICH;
    public static final int JELLYBEAN = Build.VERSION_CODES.JELLY_BEAN;

    public static boolean isMin(int level) {
        return LEVEL >= level;
    }
}

然后在您的代码中,您可以执行以下操作:

if(Api.isMin(Api.JELLYBEAN) )
    doJellybeanStuff();
else if(Api.isMin(Api.ICS) )
    doIcsStuff();
else
    doOldStuff();

答案 1 :(得分:1)

您可以使用

获取版本
int SDK_INT = android.os.Build.VERSION.SDK_INT;

您可以在设置参数

之前检查版本
if(SDK_INT < 16) {
  someAPIInLowerVersions();
} else {
  someJBApi();
}