如何同时使用Android 1.x和2.x的联系人API?

lic*_*rna 3 android

Mi问题是我需要在我的应用程序中为android 1.5,1.6和2.x实现联系人列表.

我使用旧的Contacts API,而不是ContactsContract,因为向后兼容1.x系列.但是当在2.x上显示我的应用程序时,联系人列表不完整.在某些设备中,它显示为空,在某些设备中,它仅显示设备中的某些联系人.

我知道在2.x系列上使用Contacts API它只显示主要帐户联系人,但事实并非如此.看起来只是最近才显示更新的联系人,但情况并非如此.

所以问题是:如何正确实现2.x和1.x android版本的联系人列表?

提前致谢

Com*_*are 7

但是当在2.x上显示我的应用程序时,联系人列表不完整.在某些设备中,它显示为空,在某些设备中,它仅显示设备中的某些联系人.

正确.旧的Contacts API仅访问仅存储在设备上的联系人,而不是通过其他提供商同步获得的联系人.Android 2.0也存在一个错误,你甚至没有得到本地存储的联系人,尽管这是通过Android 2.0.1 IIRC修复的.

所以问题是:如何正确实现2.x和1.x android版本的联系人列表?

对于次要版本特定的更改(例如,您只需要正确的更改Uri),您可以使用反射,如此示例项目中所示.

如果您的需求更复杂,您可以通过创建一个接口(或抽象基类)和两个实现(每个API级别一个,并且只使用正确的一个)来利用条件类加载.这在示例项目中得到了证明.