Android向后兼容技术

3

我现在正在开发一个基于最新API(15 ICS)的15项活动安卓应用程序。现在我发现,即使使用Android v4支持,该应用程序的主要功能也不向后兼容,例如:

1-fragmentTransaction动画 2-能够将字符串集放入sharedPref 3-使用片段的mapActivity

我考虑为每个具有不兼容性问题的旧操作系统制作第二个版本(大约有10个),因此如果检测到运行应用程序的设备过旧,我就使用它们。但是,我确定这是一种愚蠢的方式,有更好的方法可以解决这个问题。

如何使您的代码与API 7及以上版本兼容,而不会放弃较高API提供的功能(至少可用于新设备)?


即使我也想知道它的答案,因为当我遇到这样的问题时,我为较低版本开发了一个不同的应用程序。但我猜这没关系,因为分别处理较低和较高版本很容易。 - Shrikant Ballal
@Krishnabhadra,好的建议。我刚才接受了一些答案(评分仍然低,因为其他人并没有真正回答我的问题)。 - AlAsiri
1个回答

0

您可以在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,则会选择可绘制项)

请查看LINK以获取有关如何指定所需资源限定符的更多信息

通过这种方式,在最新的固件设备上启动时将启用最新的功能,并在其他情况下启用向后兼容性。


感谢您的回答,Sudhaker。 我知道运行时可检测性,但我的更改在于我如何声明整个类。 例如,如果<10,则扩展TabActivity,否则扩展Fragment。 - AlAsiri
感谢提供这么好的信息。我知道运行时版本的可检测性,但我必须相应地更改声明类的方式,这不是我可以在代码中更改的(除了创建不同版本的类)。例如,如果API<10,则扩展TabActivity,否则扩展Fragment。 - AlAsiri
你可以创建一个重定向启动活动,它将检查设备正在运行的SDK的当前版本,并根据要求在运行时启动相应的目标活动。(尽管我还没有尝试过)。 - Sudhaker
真的,但是那样我又必须为现有的每一个创建另一个活动,这正是我想避免的。 - AlAsiri
你有没有考虑过使用Java反射API呢?可能存在这样的可能性,但我没有投入时间调查这种情况。 - Sudhaker
不,我会尝试一下看看。谢谢您指出来,先生 :) - AlAsiri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接