你给出的代码只能访问默认的照片。此外,您应该将联系人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