Cette méthode retourne la photo Uri ou null si n'existe pas pour un contact identifié par getId()
public Uri getPhotoUri() {
Uri person = ContentUris.withAppendedId(
ContactsContract.Contacts.CONTENT_URI, Long.parseLong(getId()));
Uri photo = Uri.withAppendedPath(person,
ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);
Cursor cur = this.ctx
.getContentResolver()
.query(
ContactsContract.Data.CONTENT_URI,
null,
ContactsContract.Data.CONTACT_ID
+ "="
+ this.getId()
+ " AND "
+ ContactsContract.Data.MIMETYPE
+ "='"
+ ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE
+ "'", null, null);
if (cur != null) {
if (!cur.moveToFirst()) {
return null; // no photo
}
} else {
return null; // error in cursor process
}
return photo;
}
Si vous ajoutez une projection du curseur pour revenir ContactsContract.Data.CONTACT_ID et ContactsContract. Data.DISPLAY_NAME, vous aurez probablement une liste de contacts avec des photos. (pas tous les contacts). Ensuite, pour chaque contact, vous pouvez calculer le Uri de la photo comme au début de la méthode.
ce n'est pas ce que je voulais dire ;-) je connais cette procédure ... Je veux utiliser simpleCursorAdapter, je veux afficher dans chaque ligne l'image et le nom d'affichage, en outre, je veux seulement les contacts avec l'adresse postale. Je connais la requête, vous juste interrogez la table ContactsContract.data et filtrez tout sans le type mime de l'adresse postale. Obtenir le nom d'affichage et _ID et même le contact_ID et le photo_id, sans problème, mais pour utiliser le simpleCursoradapter 'tel quel' (c'est-à-dire sans héritage et surcharger la fonction getView()) j'ai besoin d'un URI question réponse, des suggestions? – codeScriber
Pour autant que je sache, il n'y a aucun moyen d'obtenir une référence à la photo, vous devez vous en tenir à l'URI. – Pentium10
c'est ce que je pensais. 10x. – codeScriber