你給出的代碼只能訪問默認的照片。此外,您應該將聯繫人ID附加到該URI,而不是照片ID(假設您使用數據表中的照片ID)。
如果有,你可能想嘗試直接從數據表中訪問它們多張照片。您需要手動解析數據庫遊標並轉換成原始字節數據轉換成位圖,如下圖所示:
String[] projection = {ContactsContract.CommonDataKinds.Photo.PHOTO};
Uri uri = Uri. ContactsContract.Data.CONTENT_URI;
String where = ContactsContract.Data.MIMETYPE
+ "=" + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + " AND "
+ ContactsContract.Data.CONTACT_ID + " = " + mContactId;
Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null);
if(cursor!=null&&cursor.moveToFirst()){
do{
byte[] photoData = photoCursor.getBlob(0);
Bitmap photo = BitmapFactory.decodeByteArray(photoData, 0,
photoData.length, null);
//Do whatever with your photo here...
}while(cursor.moveToNext());
}
你想mContactId與您想要照片的接觸相對應。
如果您只想限制爲臉書照片,則需要使用ContactsContract.Data.RAW_CONTACT_ID,您應該使用聯繫人ID和基於Facebook帳戶的篩選器從RawContacts表中獲得該信息(假設您知道什麼帳戶你正在尋找......這可以通過同步提供者實現改變...)
我遇到了同樣的問題。似乎只有FB同步的聯繫人才會出現問題。對於從多個來源(即twitter和FB)同步的聯繫人,這很好。 – 2010-12-22 03:17:30