2010-07-14 641 views
8

Tengo una ImageView el que estoy mostrando una imagen contactos usando un URI que siempre tiene una apariencia similar a la siguiente:detectar si el contacto tiene foto

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

Cómo podría detectar si esta foto existe, como si no fuera así, entonces quiero usar un marcador de posición (almacenado en mi carpeta dibujable). Por el momento solo muestra una imagen en blanco.

+0

tengo el mismo problema, tengo la URI de la foto , pero puede que no exista en el sistema de archivos (como cuando saca la tarjeta SD) – Pentium10

+0

¿ya lo ha descubierto? todavía estoy atascado – ng93

Respuesta

9

una función para obtener un contacto foto 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; 
} 

y llamar a esa función (contactimage es un ImageView):

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

Gracias funcionó ... –

+0

por favor dígame cómo obtener este no. (2), getPhotoUri (2); tu código funciona para mí –

6

Posiblemente usando ContactsContract.Data.PHOTO_ID. Si no tiene un valor, entonces no hay foto.

+0

gracias pero ya he resuelto una solución. lo publicaré cuando tenga la oportunidad – ng93

+0

Por favor, estoy interesado en ver lo que hiciste. – Chiggins

Cuestiones relacionadas