2014-08-29 1 views
0

Мне нужна ваша помощь для получения моих фотографий контакта.Android Нет контактной фотографии

Я получаю все мои контакты с днем ​​рождения. Теперь я должен попробовал фотографию человека как что:

... 
while (contactCursor.moveToNext()) { 
    Contact c = Contact.createContact(contactCursor); 
    c.setPhoto(getContactPhoto(contentResolver, c.getId())); 
    contacts.add(c); 
} 
.. 

private static InputStream getContactPhoto(ContentResolver contentResolver, long contactId) { 
     Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId); 
     Uri photoUri = Uri.withAppendedPath(contactUri, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); 
     Cursor cursor = contentResolver.query(photoUri, new String[] {ContactsContract.Contacts.Photo.PHOTO}, null, null, null); 
     if (cursor == null) { 
      return null; 
     } 
     try { 
      if (cursor.moveToFirst()) { 
       byte[] data = cursor.getBlob(0); 
       if (data != null) { 
        return new ByteArrayInputStream(data); 
       } 
      } 
     } finally { 
      cursor.close(); 
     } 
     return null; 
    } 

Моя проблема в настоящее время, что я не в состоянии получить любую фотографию контактов (Cursos размер = 0). По телефону (Xperia Z1 Compact) обязательно свяжитесь с фото.

Моя цель состоит в том, чтобы затем установить фотографию так:

if(contact.getPhoto() != null) { 
     Bitmap cPhoto = BitmapFactory.decodeStream(contact.getPhoto()); 
     holder.photo.setImageBitmap(cPhoto); 
    } else { 
     ShapeDrawable d = new ShapeDrawable(new OvalShape()); 
     d.getPaint().setColor(Color.BLUE); 
     d.setBounds(10, 10, 20, 20); 
     holder.photo.setImageDrawable(d); 
    } 

Большое вам спасибо за вашу помощь.

ответ

0

попробовать этот

public void getContacts(ContentResolver cr) { 
    Cursor cursor = cr.query(
      ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, 
      null, null); 
    while (cursor.moveToNext()) { 
     String name = cursor 
       .getString(cursor 
         .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 

     String photoUri = cursor 
       .getString(cursor 
         .getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_URI)); 

     friendsListitem = new FriendsListitem(name, photoUri, phoneNumber); 
     arrayListFriends.add(friendsListitem); 
    } 
    cursor.close();// close cursor 
} 

загрузить изображение с помощью Пикассо

Picasso.with(getApplicationContext()) 
       .load(Uri.parse(photoUri)).noFade() 
       .into(imageView); 
+0

Спасибо за ваш ответ. Но я постараюсь понять свою ошибку. Для того же контакта у меня есть разные фото uri's: - getContactPhoto: photoUri is: content: //com.android.contacts/contacts/9444/photo - контактное свойство: ContactsContract.Contacts.PHOTO_URI is: content: // com .android.contacts/contacts/243/photo Так что я не могу понять это поведение. Это когда фотография из разных источников? Google, FB и т. Д.? – bluepix