3

我正在为 Android 构建一个应用程序,但我想制作它,以便至少可以使用 4.0.3 功能。我目前并不担心为使用 4.0 及以下版本的用户发布此功能。

基本上,我的问题如下:

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

  • 4.0.3 应用程序是否与 4.1 应用程序完全兼容?如果没有,有什么好的解决方法?如果我在 C/C++ 中执行此操作,答案将是预处理器指令(例如,#ifdef ANDROID_OS_4_1 //do stuff for 4.1 only #endif)。然而,我知道 Java 中没有这样的等价物,更不用说 Android 了。

4

2 回答 2

4

要针对 JellyBean 进行构建,您可以使用<uses-sdk />AndroidManifest 中的标签(就在<application />标签上方):

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

通过使用 16 (JellyBean) 的 targetSdkVersion,您可以访问所有新的 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();
于 2012-09-13T23:56:52.113 回答
1

您可以通过使用获取版本

int SDK_INT = android.os.Build.VERSION.SDK_INT;

您可以在设置参数之前检查版本

if(SDK_INT < 16) {
  someAPIInLowerVersions();
} else {
  someJBApi();
}
于 2012-09-13T23:22:15.013 回答