[英]ContactsContract query column 'display_name' does not exist
[英]how to implement search contacts using number in ContactsContract query. Like “display_name LIKE ?” for name
我想根據提供的號碼來實現對聯系人的搜索。
我已經使用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。 怎么做
嘗試以下代碼,應該同時基於名稱和數字進行過濾:
private List<ContactItem> getContacts(String numberOrName) {
Uri searchUri = Uri.withAppendedPath(Phone.CONTENT_FILTER_URI, Uri.encode(numberOrName));
String[] projection = new String[] { Phone.DISPLAY_NAME, Phone.NUMBER };
Cursor cur = getContentResolver().query(searchUri, projection, null, null, null);
List<ContactItem> contacts = new ArrayList<>();
assert cur != null;
while (cur.moveToNext()) {
String name = cur.getString(0);
String phoneNumber = cur.getString(1);
contacts.add(new ContactItem(name, phoneNumber));
}
cur.close();
return contacts;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.