Ich bin vor diesem SQLite Problem, bei dem ich versuche, um die Kontakte zu extrahieren, die Telefonnummer/s mit der folgenden Abfrage hat:SQLite android Extrakt Kontakte mit Telefonnummer
Cursor cursor = context.getContentResolver().
query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
new String[]{
ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.PHOTO_URI
},
ContactsContract.Contacts.HAS_PHONE_NUMBER + ">?",
new String [] {"0"},
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC"
);
Das Problem ist, dass in der Fall, dass der Kontakt mehr als 1 Telefonnummer hat das Ergebnis in dieser Form sein wird:
id: 451, name: Maria, photoUri: null, has_phone_number: 1, phone_number: 0700 000 000
id: 451, name: Maria, photoUri: null, has_phone_number: 1, phone_number: 0800 000 000
id: 451, name: Maria, photoUri: null, has_phone_number: 1, phone_number: 0900 000 000
die wegen der doppelten Daten unerwünscht ist.
Ich möchte nur 1 Abfrage an die DB machen, die hoffentlich geschrieben werden kann das Ergebnis wie folgt zurück:
id: 451, name: Maria, photoUri: null, has_phone_number: 1, phone_number: 0700 000 000, 0800 000 000, 0900 000 000
Ist es möglich?
Vielen Dank.
ich denke nicht, dass es möglich ist, wie android db eingerichtet ist. kommt es nicht in Frage, das in eine Liste zu setzen und sie manuell mit einer Schleife oder etwas zusammenzufügen? ich weiß, dass prob nicht ein guter Weg ist, aber ich kann nicht an einen besseren denken. –
Es muss mit Kontakten im Bereich von Tausenden arbeiten, möchte ich vermeiden, zusätzliche Verarbeitung zu tun. –
Ich kenne Android nicht, aber das ist nicht zu schwer in SQL zu tun. Können Sie jedoch rohe SQL-Abfragen für Ihre Datenbank ausführen oder sind Sie darauf beschränkt, diese Abfragefunktion zu verwenden? –