Question

Je lis que les différentes entrées dans différentes tables sont reliées par la colonne _ID dans ce tableau. Par exemple, un contact peut avoir un _ID = 1 je reçois via

ContactsContract.Contacts._ID

et maintenant je veux lire le numéro de téléphone de ce contact avec

Cursor phoneCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId , null, null); 
//...
String number = phoneCursor.getString(phoneCursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER));
String id = phoneCursor.getString(phoneCursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone._ID));

Cela fonctionne très bien, mais ce que j'attendre que si le _ID du contact est que le 1 _ID du numéro de téléphone est aussi bien un, car ils appartiennent ensemble, mais ils ne sont pas égaux. La question est de savoir comment ne correspond Android ces entrées?

Merci, A.

Était-ce utile?

La solution

vous pouvez obtenir plus de détails quand vous voyez les tables de base de données

dans la mesure où ma compréhension va c'est l'information que je suis arrivé de visualiser le fichier android contacts2.db en utilisant le navigateur sqlite3 db

Je créé des 6 contacts pour tester mes contacts Android

dans le tableau des contacts et la _id raw_contact_id est en fait même (cela signifie que fournisseur de ContactsContract.Contacts)

dans le tableau de données, nous obtenons les véritables coordonnées de la personne comme numéro de téléphone et e-mail et prénom et nom de famille en utilisant Id mimetype comme condition where

lorsque l'on considère l'utilisation de la table de données raw_contact_id comme condition where pour obtenir des enregistrements particuliers du contact

ex mon raw_contact_id est 1

Je suis 3 lignes qui se compose d'e-mail, téléphone et le nom d'affichage dans la colonne data1

vous pouvez demander si nous voulons que le téléphone ou e-mail ou le nom d'affichage .... il vous aurez besoin des mimetype_id comme la condition where

pour obtenir mimetype_id de 5 ° de téléphone est pour obtenir DISPLAY_NAME mimetype_id est 6 pour obtenir email mimetype_id est 1

vous ne pouvez pas comprendre toutes ces choses si vous êtes un débutant ... mais une fois si u voir les tables internes u obtenir tout ce que je vous ai dit

coordonnées d'accès uniquement par contact_id ou raw_contact_id et non par _id qui est dans chaque table ..that colonne est à des fins différentes ..

vous pouvez jeter un oeil à ce que Im dire dans cette image http://img94.imageshack.us/i/tablesxa.jpg

Autres conseils

A correspond de contact à 1 ou plusieurs contacts de base. Les données réelles pour le contact est enregistré sous la forme

ContactsContract.Contacts.Data

Chaque élément de données contient l'identifiant du contact brut auquel il appartient. Chaque contact brut contient l'identifiant du contact auquel il appartient.

Alors, étant donné un identifiant Contact Vous pouvez trouver ce que les contacts cru qu'il représente. Obtenez les ids de contact premières puis trouver les données est dans ce contacts.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top