Uzyskaj szczegółowe informacje kontaktowe z identyfikatora URI zwróconego przez Intent.ACTION_PICK
Piszę aplikację na Androida, która ma typ danych reprezentujący osobę (w szczególności rodzica lub opiekuna dziecka). Chciałbym móc „importować” odpowiednie pola danych z bazy danych kontaktów na urządzeniu z Androidem. (Powinno to być opcjonalne; tzn. Nie będzie wymogu, aby rodzic / opiekun był już w bazie danych kontaktów, ani baza danych kontaktów nie będzie aktualizowana, jeśli dodają nowych rodziców / opiekunów).
Do tej pory napisałem kod, aby rozpocząć nowy zamiar, aby wybrać konkretny kontakt (używając Intent.ACTION_PICK). Następnie otrzymuję identyfikator URI reprezentujący określony kontakt w bazie danych.
Niestety nie wiem, jaki jest następny krok. Wydaje się, że powinno to być najprostszą rzeczą na świecie, ale najwyraźniej nie. Przeczytałem dokumentację na stronie programisty Androida i przejrzałem więcej niż jedną książkę na Androida. Brak przyjemności.
Szczegółowe informacje, które chciałbym uzyskać, to:
Nazwisko kontaktu (pierwsze i ostatnie oddzielnie, jeśli to możliwe)
Główny adres e-mail kontaktu
Numer telefonu komórkowego kontaktu
Wyobrażam sobie, że powinno to być możliwe poprzez odpytywanie za pomocą ContentResolver, ale nie mam pojęcia, jak to zrobić z URI zwróconym z Intent. Większość dokumentacji zakłada, że masz identyfikator kontaktu, a nie identyfikator URI kontaktu. Nie mam też pojęcia, jakie pola mogę umieścić w projekcji dla zapytania, zakładając, że jest to właściwy sposób na zrobienie tego, co chcę.
Oto mój kod początkowy:
// 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?
}
}