【发布时间】:2019-01-20 17:38:20
【问题描述】:
我想根据提供的号码搜索联系人。
我已使用 ContactsContract 读取所有联系人。我已经通过证明 searchView 实现了基于名称的搜索条件,并且将显示匹配的名称,但我也想按数字执行相同的操作
private List<ContactItem> getContacts(String s) {
String whereString = "display_name LIKE ?";
String[] whereParams = new String[]{ "%" + s + "%"};
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, whereString, whereParams, null);
List<ContactItem> contacts = new ArrayList<>();
assert cur != null;
while (cur.moveToNext()) {
String name = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
contacts.add(new ContactItem(name,phoneNumber));
}
cur.close();
return contacts;
}
我想在这里使用电话号码而不是 display_name。如何做到这一点
【问题讨论】:
-
参见
ContactsContract.CommonDataKinds.Phone#CONTENT_FILTER_URI- "使用过滤器查找电话的 content:// 样式 URL。过滤器返回 MIME 类型 CONTENT_ITEM_TYPE 的记录。过滤器应用于显示名称以及电话号码。过滤器参数应作为此 URI 之后的附加路径段传递。"
标签: android android-contacts contactscontract