У меня есть массив телефонных номеров, и я хочу получить соответствующие имена контактов из базы данных контактов.
В массиве телефонных номеров у меня также есть номера, которые ранее не сохранялись в базе данных контактов. Например;
- 3333333 -> Тим
- 5555555 -> Джим
- 1111111 -> неизвестно
У меня есть массив, содержащий номера телефонов, показанные выше, а именно phoneArr .
int size=phoneArr.size();
if(size>0){
Cursor[] cursors=new Cursor[size];
for(int i=0;i<size;i++){
Uri contactUri1 = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneArr.get(i)));
cursors[i] = getContentResolver().query(contactUri1, PEOPLE_PROJECTION, null, null, " _id asc limit 1");
}
Cursor phones=new MergeCursor(cursors);
phones.getCount () возвращает 2 в приведенном выше сценарии. Когда номер телефона не отображается в списке контактов, курсор становится пустым, и когда я их объединяю, он вообще ничего не вносит. Я хочу, чтобы курсор был следующим:
Курсорные телефоны -> {Тим, Джим, 1111111}
Я думаю, что могу сделать это, добавив строку вручную следующим образом:
Uri contactUri1 = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneArr.get(i)));
cursors[i] = getContentResolver().query(contactUri1, PEOPLE_PROJECTION, null, null, " _id asc limit 1");
if(cursors[i].getCount()==0)
// add the phone number manually to the cursor
Как мне этого добиться?
Вот ЛЮДИ_ПРОЕКТА
private static final String[] PEOPLE_PROJECTION = new String[] {
ContactsContract.PhoneLookup._ID,
ContactsContract.PhoneLookup.DISPLAY_NAME,
ContactsContract.PhoneLookup.NUMBER
};