Hinzufügen von Zeilen in den Cursor manuell

Habe ich eine Reihe von Handy-Nummern und ich will die entsprechenden Kontakte aus der Kontakte-Datenbank.

In der Reihe von Handy-Nummern, ich habe auch einige Nummern, die nicht gespeichert sind, bevor der Kontakt-Datenbank. Zum Beispiel;

  • 3333333 -> Tim
  • 5555555 -> Jim
  • 1111111 -> unbekannt

Habe ich das array mit den Telefonnummern oben gezeigt, nämlich 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);

Handys.getCount() gibt 2 zurück, in der das oben beschriebene Szenario. Wenn die Telefonnummer nicht angezeigt, in der Kontaktliste den Mauszeiger leer wird und irgendwie, wenn ich Sie Zusammenführen es nicht tragen überhaupt etwas. Was ich will ist, um einen cursor wie folgt

Cursor-Handys - > {Tim, Jim, 1111111}

Ich denke, ich kann dies tun, indem die Zeile wie folgt manuell:

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

Wie kann ich das erreichen?

Hier ist die PEOPLE_PROJECTION

private static final String[] PEOPLE_PROJECTION = new String[] {
    ContactsContract.PhoneLookup._ID,
    ContactsContract.PhoneLookup.DISPLAY_NAME,
    ContactsContract.PhoneLookup.NUMBER
};

InformationsquelleAutor der Frage 0x5f3759df | 2012-03-29

Schreibe einen Kommentar