0

我在这里阅读了相关的几个问题,但找不到答案:我有一台 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));

结果成功。本来Contact中对应的号码是+1 555 555 5555的格式,但是我改成完全匹配输入的号码15555555555,老格式的URI还是不行。在这两种情况下,新格式的 URI 都会成功。

有人对为什么会这样有任何想法吗?我难住了!

4

1 回答 1

0

就是这样。旧的 API 是行不通的。需要与旧设备兼容,我使用反射在 API > 4 上加载和使用新的 API 调用(ContactsContract)。

于 2010-08-06T18:50:41.590 回答