【问题标题】:How to make ICS app (API 15) compatible with Jellybean(API 16)?如何使 ICS 应用程序(API 15)与 Jellybean(API 16)兼容?
【发布时间】:2012-09-13 23:20:07
【问题描述】:

我正在构建一个适用于 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 了。

【问题讨论】:

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


    【解决方案1】:

    要针对 JellyBean 进行构建,您可以在 AndroidManifest 中使用 <uses-sdk /> 标签(就在您的 <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();
    

    【讨论】:

    • 请注意,这些 Build 版本代码是编译时常量,因此即使在旧版本的 Android 上也可以安全使用
    • 太棒了。非常非常感谢。
    【解决方案2】:

    您可以通过使用获取版本

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

    设置参数前可以查看版本

    if(SDK_INT < 16) {
      someAPIInLowerVersions();
    } else {
      someJBApi();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-29
      • 2019-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-26
      • 2017-05-08
      相关资源
      最近更新 更多