【发布时间】:2011-03-28 09:44:31
【问题描述】:
我有一个在 Android 1.x 中运行良好但在 Android 2.x 中运行良好的应用 我需要根据运行应用程序的 Android 版本(查询联系人)做不同的事情。 我可以根据运行应用程序的 Android 版本在一个应用程序中选择两种不同的方法吗?
非常感谢
埃德
【问题讨论】:
我有一个在 Android 1.x 中运行良好但在 Android 2.x 中运行良好的应用 我需要根据运行应用程序的 Android 版本(查询联系人)做不同的事情。 我可以根据运行应用程序的 Android 版本在一个应用程序中选择两种不同的方法吗?
非常感谢
埃德
【问题讨论】:
使用反射和类加载器。请参阅 Android 开发者博客上的这篇文章:http://feedproxy.google.com/~r/blogspot/hsDu/~3/9WEwRp2NWlY/how-to-have-your-cupcake-and-eat-it-too.html
编辑: 感谢 CommonsWare 指出一个使用新旧联系人内容提供者和条件类加载的示例项目:http://github.com/commonsguy/cw-advandroid/tree/master/Contacts/Spinners/
【讨论】:
您可以使用 BUILD.VERSION 获取 sdk 版本,检查 How to retrieve the android sdk version?
但是,我想知道什么功能在 1.x 上可运行而在 2.x 上不可用。 你使用过任何内部类吗?
如果可以避免的话,我真的建议你修复功能问题,而不是用不同的版本做不同的事情。
【讨论】:
您可以读取设备的操作系统版本。根据设备操作系统版本,您可以在应用中使用不同的方法,但您只能针对一个 SDK 版本进行编译。因此,你需要选择最小值,目前是 1.6(我认为 1.5 已经很少使用了)
见: http://developer.android.com/reference/android/os/Build.VERSION.html
为多个屏幕/设备开发: http://developer.android.com/guide/practices/screens_support.html
【讨论】:
最新的 Android SDK 附带的名片示例提供了很大的帮助。我向那些像我一样可能不是专业的全职开发人员的人推荐它。谢谢大家的好意。
【讨论】: