2010-07-14 8 views
8

J'ai une ImageView que je suis afficher une image de contacts à l'aide d'un Uri qui ressemble toujours semblable à ceci:détecter si le contact a photo

contenu: //com.android.contacts/contacts/ 34/photo

Comment pourrais-je être en mesure de détecter si cette photo existe, comme si elle ne pas alors je veux utiliser un espace réservé à la place (stocké dans mon dossier drawable). En ce moment, il montre juste une image vide.

+0

J'ai le même problème, je reçois l'URI de la photo , mais il peut ne pas exister sur le système de fichiers (comme lorsque vous sortez la carte SD) – Pentium10

+0

avez-vous déjà compris? Im encore coincé – ng93

Répondre

9

fonction pour obtenir une photo de contacts uri:

public Uri getPhotoUri(Integer contactid) { 
    Cursor photoCur = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '1'", null, ContactsContract.Contacts.DISPLAY_NAME+" COLLATE LOCALIZED ASC"); 
    photoCur.moveToPosition(contactid); 
    Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, photoCur.getLong(photoCur.getColumnIndex(ContactsContract.Contacts._ID))); 
    Uri photo = Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); 
    return photo; 
} 

et appeler cette fonction (contactimage est un ImageView):

Uri contactphoto = getPhotoUri(2); 
contactimage.setImageURI(contactphoto); 
if (contactimage.getDrawable() == null) { 
    contactimage.setImageResource(R.drawable.contactplaceholder); 
} 
+0

Merci, il a travaillé ... –

+0

s'il vous plaît dites-moi comment obtenir ce numéro (2), getPhotoUri (2); votre code fonctionne pour moi –

6

Peut-être en utilisant ContactsContract.Data.PHOTO_ID. S'il n'a pas de valeur, alors il n'y a pas de photo.

+0

merci mais ive déjà compris une solution de contournement. le posterai quand j'aurai une chance – ng93

+0

S'il vous plaît faites, je suis intéressé à voir ce que vous avez fait. – Chiggins

Questions connexes