2011-09-08 82 views
0

我有谷歌聯繫鏈接與Facebook聯繫人(附圖)和Skype聯繫人(附圖)。如何正確獲取聯繫人照片?

我選擇聯繫人的Skype照片(通過地址簿應用程序)。地址簿顯示與所選(Skype)照片的聯繫。

啓動我的應用程序。通過聯繫人ID從ContactsContract.Contacts.CONTENT_URI申請照片ID。將Image加載到ImageView。一切似乎都很好 - 照片已被加載。完成我的應用。

我選擇Facebook照片聯繫人(通過地址簿應用程序)。地址簿顯示與所選(Facebook)照片的聯繫。

啓動我的應用程序。再次通過聯繫人ID請求照片ID。收到的照片ID與以前的ID不同。將Image加載到ImageView。照片尚未加載。 LogCat:「relolveUri在錯誤位圖uri上失敗:...」。爲什麼???

我的代碼的某些部分:

Cursor photoCursor = managedQuery(
    ContactsContract.Contacts.CONTENT_URI, 
    new String[]{ ContactsContract.Contacts.PHOTO_ID }, 
    ContactsContract.Contacts._ID + "=?", 
    new String[]{ contactId }, 
    null); 

String photoId = photoCursor.getString(photoCursor.getColumnIndex(ContactsContract.Contacts.PHOTO_ID)); 
Uri photoUri = Uri.withAppendedPath(ContactsContract.Data.CONTENT_URI, photoIdByContatId); 

ImageView imageView = (ImageView)findViewById(R.id.photo); 
imageView.setImageURI(photoUri); 

回答

0

試試這個,

Cursor photoCursor = managedQuery(

       new String[]{ContactsContract.Contacts._ID + "=?", 
       String.valueOf(ContactsContract.Contacts.Photo.MIMETYPE+ "=?")}, 
       new String[]{contactId, 
String.valueOf(ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE) } 
null); 
+0

MIMETYPE只需要爲ContactsContract.Data.CONTENT_URI。我從ContactsContract.Contacts.CONTENT_URI獲取照片ID。 – Eugene

+0

如果嘗試從ContactsContract.Data.CONTENT_URI接收照片ID,則會返回兩個具有相同照片ID的記錄。這些ID與我的相似。 – Eugene