簡體   English   中英

如何在ContactsContract查詢中使用數字實現搜索聯系人。 就像“ display_name LIKE?”這樣的名字

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM