如何在联系人合同查询中使用数字实现搜索联系人。喜欢"display_name LIKE ?"的名字



我想根据提供的号码实现搜索联系人。

我已经使用联系人合同来读取所有联系人。我已经通过证明 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;
}

最新更新