Abrufen spezifischer Kontaktinformationen von URI, die von Intent.ACTION_PICK zurückgegeben wurden

Ich schreibe eine Android-App mit einem Datentyp, der eine Person darstellt (insbesondere die Eltern oder Erziehungsberechtigten eines Kindes). Ich möchte die relevanten Datenfelder aus der Kontaktdatenbank in das Android-Gerät "importieren" können. (Dies sollte optional sein. Das heißt, es ist nicht erforderlich, dass sich das Elternteil / der Erziehungsberechtigte bereits in der Kontaktdatenbank befindet. Die Kontaktdatenbank wird auch nicht aktualisiert, wenn neue Eltern / Erziehungsberechtigte hinzugefügt werden.)

Bisher habe ich Code geschrieben, um eine neue Absicht zum Auswählen des bestimmten Kontakts zu starten (mithilfe von Intent.ACTION_PICK). Ich erhalte dann eine URI, die einen bestimmten Kontakt in der Datenbank darstellt.

Leider weiß ich nicht, was der nächste Schritt ist. Es scheint, dass dies die einfachste Sache der Welt sein sollte, aber anscheinend nicht. Ich habe die Dokumentation auf der Android-Entwickler-Website gelesen und mehr als ein Android-Buch durchgesehen. Keine Freude.

Die spezifischen Informationen, die ich erhalten möchte, sind:

Name des Kontakts (Vor- und Nachname, falls möglich, getrennt)

Die (primäre) E-Mail-Adresse des Kontakts

Die Handynummer des Kontakts

Ich stelle mir vor, dass dies durch Abfragen mit dem ContentResolver möglich sein sollte, aber ich habe keine Ahnung, wie dies mit dem vom Intent zurückgegebenen URI geschehen soll. In den meisten Dokumentationen wird davon ausgegangen, dass Sie die Kontakt-ID und nicht die URI des Kontakts haben. Außerdem habe ich keine Ahnung, welche Felder ich in die Projektion für die Abfrage einfügen kann, vorausgesetzt, dies ist sogar der richtige Weg, um das zu tun, was ich will.

Hier ist mein Startcode:

// In a button's onClick event handler:
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);

// In onActivityResult:
if (resultCode == RESULT_OK) {
    if (requestCode == PICK_CONTACT) {
        contactURI = data.getData();
        // NOW WHAT?
    }
}

Antworten auf die Frage(3)

Ihre Antwort auf die Frage