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