我需要在所有Android版本上运行我的应用,但在2.0中更改了联系人API。
在SDK 1.6及更早版本中,我使用android.provider.Contacts查询联系人数据库,但这在2.0中不起作用
相反,对于2.0我使用android.provider.ContactsContract。这提出了一个问题:当我有ContactsContract的代码时,我的应用程序将不会为1.6及更早版本构建。
我是否需要拥有两个不同版本的应用程序(一个用于< = 1.6,一个用于2.0及更高版本),还是有办法避免这样做?
答案 0 :(得分:8)
您可以使用Java Reflection在Android上支持这两个版本。有趣的是,the answer to your question can be found in a recent question about reflection used to solve this exact problem:
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) {
}