Я пишу приложение для Android, которое имеет тип данных, который представляет человека (в частности, родителя или опекуна ребенка). Я хотел бы иметь возможность "импортировать" соответствующие поля данных из базы данных "Контакты" на устройстве Android. (Это должно быть необязательным, то есть не будет требованием, чтобы родитель/опекун уже находился в базе данных "Контакты" , а также не обновлялась база данных "Контакты" , если они добавляют новых родителей/опекунов.)
До сих пор я написал код для запуска нового намерения, чтобы выбрать конкретный контакт (используя Intent.ACTION_PICK). Затем я получаю URI, который представляет конкретный Контакт в базе данных.
К сожалению, я не знаю, что следующий шаг. Похоже, это должно быть самым простым в мире, но, видимо, нет. Я прочитал документацию на веб-сайте разработчика Android, и я просмотрел несколько книг Android. Нет радости.
Конкретной информацией, которую я хотел бы получить, является:
-
Имя контакта (по возможности, первое и последнее отдельно)
-
Контактный (первичный) адрес электронной почты
-
Контактный номер сотового телефона
Я предполагаю, что это должно быть возможно, запрашивая использование ContentResolver, но я не знаю, как это сделать с URI, возвращенным из Intent. В большинстве документов предполагается, что у вас есть Contact ID, а не Contact URI. Кроме того, я понятия не имею, какие поля я могу помещать в проекцию для запроса, предполагая, что это даже правильный способ делать то, что я хочу.
Вот мой стартовый код:
// In a button 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?
}
}