Obter informações de contato específicas do URI retornadas de Intent.ACTION_PICK

Estou escrevendo um aplicativo para Android que possui um tipo de dados que representa uma pessoa (especificamente, o pai ou responsável de uma criança). Gostaria de poder "importar" os campos de dados relevantes do banco de dados de Contatos no dispositivo Android. (Isso deve ser opcional; ou seja, não será um requisito que o pai / responsável esteja no banco de dados de Contatos, nem o banco de dados de Contatos será atualizado se eles adicionarem novos pais / responsáveis.)

Até agora, escrevi código para iniciar um novo Intenção para escolher o contato específico (usando Intent.ACTION_PICK). Em seguida, obtenho um URI que representa um contato específico no banco de dados.

Infelizmente, não sei qual é o próximo passo. Parece que esta deve ser a coisa mais simples do mundo, mas aparentemente não. Eu li a documentação no site do desenvolvedor Android e examinei mais de um livro do Android. Sem alegria.

A informação específica que eu gostaria de obter é:

O nome do contato (primeiro e último separadamente, se possível)

Endereço de email do contato (principal)

Número de telefone celular do contato

Eu imagino que isso deve ser possível consultando o ContentResolver, mas não tenho idéia de como fazer isso com o URI retornado do Intent. A maior parte da documentação pressupõe que você tenha o ID do contato, não o URI do contato. Além disso, não tenho ideia do tipo de campos que posso colocar na projeção da consulta, supondo que esse seja o jeito certo de fazer o que eu quero.

Aqui está o meu código de partida:

// 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?
    }
}

questionAnswers(3)

yourAnswerToTheQuestion