2010-07-14 12 views
8

ho un ImageView che sto mostrando una foto contatti utilizzando un URI che sembra sempre simile a questo:rilevare se il contatto ha foto

contenuti: //com.android.contacts/contacts/ 34/foto

Come potrei essere in grado di rilevare se questa foto esiste, come se non fosse allora voglio usare un segnaposto invece (memorizzato nella mia cartella drawable). Al momento mostra solo un'immagine vuota.

+0

Ho lo stesso problema, ho l'URI della fotografia , ma potrebbe non esistere sul file system (come quando si estrae la scheda SD) – Pentium10

+0

hai già capito? Sono ancora bloccato – ng93

risposta

9

una funzione per ottenere una contatti 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; 
} 

e chiamare quella funzione (contactimage è un ImageView):

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

Grazie ha funzionato ... –

+0

per favore dimmi come ottenere questo numero (2), getPhotoUri (2); il tuo codice funziona per me –

6

Possibilmente utilizzando ContactsContract.Data.PHOTO_ID. Se non ha un valore, non c'è foto.

+0

grazie ma Ive già capito una soluzione. lo posterò quando ne avrò la possibilità – ng93

+0

Per favore, sono interessato a vedere cosa hai fatto. – Chiggins

Problemi correlati