4

我需要我的应用程序在所有 Android 版本上运行,但联系人 API 在 2.0 中发生了变化。

在 SDK 1.6 及更早版本中,我使用 android.provider.Contacts 来查询联系人数据库,但这在 2.0 中不起作用

相反,对于 2.0,我使用 android.provider.ContactsContract。这带来了一个问题:当我有 ContactsContract 的代码时,我的应用程序将不会为 1.6 及更早版本构建。

我是否需要有两个单独的应用程序版本(一个用于 <= 1.6,一个用于 2.0 及更高版本)还是有办法避免这样做?

4

1 回答 1

8

您可以使用 Java 反射在 Android 上支持这两个版本。有趣的是,您的问题的答案可以在最近关于用于解决这个确切问题的反射的问题中找到

Uri baseUri = Contacts.Phones.CONTENT_FILTER_URL;
try {
    Class<?> c = Class.forName("android.provider.ContactsContract$PhoneLookup");
    baseUri = (Uri) c.getField("CONTENT_FILTER_URI").get(baseUri);
} 
    catch (Exception e) {
}
于 2010-01-11T21:28:18.377 回答