Android向后兼容技术

Android向后兼容技术,android,android-4.0-ice-cream-sandwich,backwards-compatibility,Android,Android 4.0 Ice Cream Sandwich,Backwards Compatibility,我现在在开发基于最新API(15个ICS)的15个活动android应用程序方面取得了进步。现在,我发现应用程序的主要功能甚至与android v4支持不向后兼容,例如: 1-fragmentTransaction动画 2-在sharedPref中放置StringSet的能力 3-使用片段进行映射活动 我考虑为每一类有不兼容问题(大约10个)的旧操作系统制作第二个版本,因此如果我检测到运行应用程序的设备是旧的,我就使用它们。然而,我相信这是一个愚蠢的方法,有一个更好的方法来做到这一点 让您的代码

我现在在开发基于最新API(15个ICS)的15个活动android应用程序方面取得了进步。现在,我发现应用程序的主要功能甚至与android v4支持不向后兼容,例如:

1-fragmentTransaction动画 2-在sharedPref中放置StringSet的能力 3-使用片段进行映射活动

我考虑为每一类有不兼容问题(大约10个)的旧操作系统制作第二个版本,因此如果我检测到运行应用程序的设备是旧的,我就使用它们。然而,我相信这是一个愚蠢的方法,有一个更好的方法来做到这一点


让您的代码与API 7及以上兼容的最佳方法是什么,而不保留更高API提供的功能(至少用于较新的设备)

您可以在运行时在android中检查API级别,并根据API级别启用所需的功能

像下面这样

int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH){
// Do something for ICS and above versions
} else{
// do something for phones running an SDK before ICS
}
此外,您还可以将版本限定符添加到资源文件夹,如drawable-v15(如果设备API级别为15,则将拾取drawables)

有关如何为资源指定所需限定符的更多信息,请选中此复选框


这样,在最新固件设备上启动时,将启用可用的最新功能,否则将启用向后兼容性。

即使我想知道它的答案,因为当我遇到此类问题时,我为较低版本开发了不同的应用程序。但我想这没关系,因为它很容易分别处理较低版本和较高版本。@Krishnabhadra,好主意。我刚刚接受了一些答案(评分仍然很低,因为其他人没有真正回答我的问题)感谢Sudhaker的回答,我知道运行时检测功能,但我的更改是在声明整个类的方式上。例如,如果感谢您提供的精彩信息。我知道运行时版本检测功能,但我必须相应地更改声明类的方式,我想,这不是什么,我可以在代码中更改(而不是创建不同版本的类)。例如,如果您可以创建重定向启动器活动,它将检查设备正在运行的SDK的当前版本,并根据要求在运行时启动相应的目标活动。(虽然没有尝试)。但是,我必须再为我现在创建的每一个活动创建一个活动,这是我想要避免的。你是否考虑过使用java反射API?可能存在这样的可能性,但我没有投入任何时间调查这种情况。