Добавление строк в Cursor вручную

У меня есть массив телефонных номеров, и я хочу получить соответствующие имена контактов из базы данных контактов.

В массиве телефонных номеров у меня также есть некоторые номера, которые ранее не сохранялись в базу контактов. Например;

  • 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);

phone.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

Как я могу этого добиться ?

Вот PEOPLE_PROJECTION

private static final String[] PEOPLE_PROJECTION = new String[] {
    ContactsContract.PhoneLookup._ID,
    ContactsContract.PhoneLookup.DISPLAY_NAME,
    ContactsContract.PhoneLookup.NUMBER
};
17
задан yildirimyigit 29 March 2012 в 01:20
поделиться