Estou trabalhando no Android 2.0 e estou tentando receber uma lista de todos os contatos.
Como o android.provider.Contacts.People está obsoleto, tenho que usar o android.provider.ContactsContract , mas não consigo encontrar um exemplo adequado de como usá-lo (ex: recuperar uma lista de todos os contatos na lista telefônica).
Alguém sabe onde encontrar esse exemplo?
android
contacts
android-2.0-eclair
apareça
fonte
fonte
Respostas:
Primeiro, certifique-se de ter adicionado
ao seu arquivo AndroidManifest.xml, então você pode percorrer seus contatos de telefone desta forma:
Além disso, você pode percorrer seus contatos e simplesmente obter o nome e o número de telefone como este:
Além disso, se você precisar obter coisas como notas de um contato, você precisará usar um URI diferente, como o seguinte (sinta-se à vontade para usar este método):
Observe que, desta vez, usei não apenas o id do contato, mas também o tipo MIME para a consulta.
fonte
É ótimo ver algumas informações úteis, é frustrante o quão mal este importante tópico é coberto por documentos e outros. Depois de muito hackear, pensei em compartilhar um pouco de código também. O código a seguir é um pouco mais bonito e faz a mesma coisa com mais eficiência.
O pedaço de código acima retorna um Cursor que aponta para a consulta resultante que contém apenas as linhas que têm um número de telefone. Isso é bom, pois normalmente você tem muitos contatos sem números. Além disso, a PROJEÇÃO limita a quantidade de dados retornados.
O bloco acima obtém o número de telefone associado a cada id de contato que possui um número de telefone. Eu armazeno todas as informações em uma tabela hash e com um valor-chave do número de telefone. Também retirei do número de telefone todas as informações de nenhum dígito. Por algum motivo, embora ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER seja válido se você incluir isso no argumento de projeção, ele quebra a consulta, não sei por que e é frustrante que isso aconteça.
A segunda parte do código acima é muito lenta, todas as chamadas de consulta simplesmente atolam tudo. O código a seguir é muito mais rápido. Basta pegar todas as linhas do conteúdo do telefone e usar os contact_ids para classificar os dados desejados.
Você acaba com uma tabela de hash com todas as informações que você deseja. Claro, você pode colocar qualquer informação que quiser na estrutura de dados. A segunda maneira de fazer isso é muito mais rápida.
fonte
ContactsContract.Data.DISPLAY_NAME
) em sua projeção; então você não teria que fazer uma junção simulada confusa em Java.Só quero adicionar, quando você está recuperando os contatos, você pode obter muitos contatos "inúteis" - por exemplo, alguns endereços de e-mail para os quais um usuário em algum momento enviou um e-mail, mas não estão agregados ... Se você quiser apenas os contatos visíveis para o usuário, como no próprio aplicativo de contatos do Android, você precisa restringir a seleção a apenas IN_VISIBLE_GROUP.
fonte
Eu acho que é importante ter o código deste URL http://coderzheaven.com/2011/06/get-all-details-from-contacts-in-android/ no StackOverflow porque às vezes links como esse caem.
texto enfatizado
fonte
Achei uma solução muito fácil para ler contatos. (enfadonho escrever código para ler cada valor, então é bom usar uma classe de wrapper para contatos)
Claro
<uses-permission android:name="android.permission.READ_CONTACTS"/>
ContactList.java
Contact.java
Address.java
Email.java
Im.java
Organization.java
Phone.java
ContactAPI.java
ContactAPISdk5.java
ContactAPISdk3.java
Nota : Não se esqueça de alterar o nome do pacote
*******
.Fonte (o link pode morrer a qualquer momento :))
fonte
Põe isto ....
Deixe-me saber se houver algum problema.
fonte
Esta parte não funcionaria para mim:
Se eu usar isso, ele fará:
fonte
Você pode usar o exemplo "ContactManager" do site do desenvolvedor do Android (OU) Vá para o local onde você definiu o caminho para baixar android-sdk em seu sistema. Na pasta android-sdk-mac_x86 / samples / android-10, você pode ver o exemplo "ContactManager".
Tentei usar este exemplo, funcionou bem em meu aplicativo.
fonte
Estou usando o Samsung Galaxy Note 4 e não sei por que nenhuma das opções acima funcionou para mim. Eu misturei alguns e fiz este woking ..
fonte