Je travaille sur Android 2.0 et j'essaye de recevoir une liste de tous les contacts.
Depuis android.provider.Contacts.People est obsolète, je dois utiliser android.provider.ContactsContract , mais je ne trouve pas d'exemple approprié pour l'utiliser (par exemple, récupérer une liste de tous les contacts du répertoire).
Quelqu'un sait où trouver un tel exemple?
android
contacts
android-2.0-eclair
appme up
la source
la source
Réponses:
Tout d'abord, assurez-vous d'avoir ajouté
dans votre fichier AndroidManifest.xml, vous pouvez ensuite parcourir les contacts de votre téléphone comme ceci:
De plus, vous pouvez parcourir vos contacts et obtenir simplement le nom et le numéro de téléphone comme ceci:
De plus, si vous avez besoin d'obtenir des choses comme des notes d'un contact, vous devrez utiliser un autre URI, comme le suivant (n'hésitez pas à utiliser cette méthode):
Remarquez que cette fois, j'ai utilisé non seulement l'identifiant du contact, mais le type mime pour la requête.
la source
C'est formidable de voir des informations utiles, il est frustrant de voir à quel point ce sujet important est mal couvert par les documents et autres. Après trop de piratage, j'ai pensé partager aussi un peu de code. Le code suivant est un peu plus joli et permet de faire la même chose plus efficacement.
Le morceau de code ci-dessus renvoie un curseur qui pointe vers la requête résultante qui ne contient que les lignes qui ont un numéro de téléphone. C'est bien car vous avez généralement de nombreux contacts sans numéros. De plus, la PROJECTION limite la quantité de données renvoyées.
Le bloc ci-dessus obtient le numéro de téléphone associé à chaque identifiant de contact qui a un numéro de téléphone. Je stocke toutes les informations dans une table de hachage et avec une valeur clé du numéro de téléphone. J'ai également dépouillé le numéro de téléphone de toutes les informations sans chiffres. Pour une raison quelconque, même si ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER est valide si vous incluez cela dans l'argument de projection, il brise la requête, je ne sais pas pourquoi et c'est frustrant que ce soit le cas.
La deuxième partie du code ci-dessus est trop lente, tous les appels de requête embourbent tout. Le code suivant est beaucoup plus rapide. Saisissez simplement toutes les lignes du contenu du téléphone et utilisez les contact_ids pour trier les données souhaitées.
Vous vous retrouvez avec une table de hachage contenant toutes les informations que vous souhaitez. Bien sûr, vous pouvez mettre toutes les informations que vous voulez dans la structure de données. La deuxième façon de procéder est beaucoup plus rapide.
la source
ContactsContract.Data.DISPLAY_NAME
) dans votre projection; alors vous n'auriez pas à faire une jointure simulée désordonnée en Java.Je veux juste ajouter, lorsque vous récupérez les contacts, vous pouvez obtenir beaucoup de contacts "inutiles" - par exemple, certaines adresses e-mail qu'un utilisateur a à un moment donné envoient un e-mail, mais ne sont pas agrégées ... Si vous voulez seulement les contacts visibles par l'utilisateur, comme dans l'application de contacts Androids propre, vous devez limiter la sélection à IN_VISIBLE_GROUP uniquement.
la source
Je pense qu'il est important que le code de cette URL http://coderzheaven.com/2011/06/get-all-details-from-contacts-in-android/ sur StackOverflow provoque parfois des liens comme celui-là.
texte souligné
la source
J'ai trouvé une solution très simple pour lire les contacts. (ennuyeux d'écrire du code pour lire chaque valeur, il est donc bon d'utiliser la classe wrapper pour les contacts)
Bien sûr
<uses-permission android:name="android.permission.READ_CONTACTS"/>
ContactList.java
Contact.java
Address.java
Email.java
Im.java
Organisation.java
Téléphone.java
ContactAPI.java
ContactAPISdk5.java
ContactezAPISdk3.java
Remarque : n'oubliez pas de changer le nom du package à la place
*******
.Source (le lien peut être mort à tout moment :))
la source
Mettez ceci ...
Faites-moi savoir si un problème.
la source
Cette partie ne fonctionnerait pas pour moi:
Si j'utilise ceci, cependant, il le fait:
la source
Vous pouvez utiliser l'exemple "ContactManager" du site du développeur Android (OU) Allez à l'emplacement où vous avez défini le chemin pour télécharger android-sdk dans votre système. Dans le dossier android-sdk-mac_x86 / samples / android-10, vous pouvez voir l'exemple "ContactManager".
J'ai essayé d'utiliser cet exemple, j'ai bien fonctionné dans mon application.
la source
J'utilise Samsung Galaxy Note 4 et je ne comprends pas pourquoi rien de ce qui précède n'a fonctionné pour moi. J'en ai mélangé quelques-uns et j'ai fait ce réveil.
la source