2012-01-23 66 views
1

我想從聯繫人中獲取照片,如果某些聯繫人沒有照片返回默認照片(只是剪影),我該怎麼做? 在此先感謝, 狼。如何從聯繫人中獲取照片?

+0

參考此鏈接http://stackoverflow.com/questions/5332333/android-問題 - 正在接觸 - 照片從數據 - 電子郵件 - 查詢 – Abhi

回答

0

您可以使用ContactsContract.Contacts.Photo獲取指定聯繫人的圖片。

從上面的文檔鏈接

完整的示例:

public InputStream openDisplayPhoto(long contactId) { 
    Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId); 
    Uri displayPhotoUri = Uri.withAppendedPath(contactUri, Contacts.Photo.DISPLAY_PHOTO); 
    try { 
     AssetFileDescriptor fd = 
      getContentResolver().openAssetFileDescriptor(displayPhotoUri, "r"); 
     return fd.createInputStream(); 
    } catch (IOException e) { 
     return null; 
    } 
} 
+0

我必須把這樣的XML: \t \t Wolf87

+0

因爲我想填充列表視圖與聯繫人的名字和照片。 – Wolf87

0
public Uri getPhotoUri() { 
    try { 
     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 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return null; 
    } 
    Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long 
      .parseLong(getId())); 
    return Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); 
} 

,你可以使用它作爲

Uri u = objItem.getPhotoUri(); 
if (u != null) { 
     mPhotoView.setImageURI(u); 
} else { 
     mPhotoView.setImageResource(R.drawable.ic_contact_picture_2); 
} 
+0

什麼是「getId()?」 – SpicyWeenie

+0

又是什麼「objItem?」 – SpicyWeenie

+0

有關更多信息,請參閱開發人員文檔,您可以在此找到相同的示例 – Abhi

相關問題