查找从电话号码联系 - 旧与新URI:旧失败,新成功?

时间:2010-08-05 12:04:31

标签: android contacts contactscontract

我在这里阅读了几个相关的问题但找不到答案:我有一个Android 2.1设备(HTC Incredible)。但是,我的应用必须与早期(SDK 5之前的版本)设备兼容,因此我使用过滤器URI的弃用格式:

Uri contactUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL, Uri.encode(number));
Cursor C = context.getContentResolver().query(contactUri , null, null, null, null));

号码的格式为15555551212.至少在我的设备上找不到联系人。但是,更改为新的(SDK 5和更高版本)ContactsContract格式URI

Uri contactUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
Cursor C = context.getContentResolver().query(contactUri , null, null, null, null));

取得成功。最初,联系人中的相应号码的格式为+1 555 555 5555,但我将其更改为与输入号码15555555555完全匹配,旧格式URI仍然失败。在这两种情况下,新格式URI都会成功。

有没有人想过为什么会这样?我很难过!

1 个答案:

答案 0 :(得分:0)

就是这样。旧API不会这样做。需要与旧设备兼容,我使用Reflection来提供并使用API​​上的新API调用(ContactsContract)> 4。