2011-09-08 119 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

相关问题