获取与facebook同步的联系人照片

Yas*_*ash 7 android facebook sync image contacts

我试图在我的应用程序中显示联系人图片,但我正在获取那些仅手动添加的图片而不是与facebook同步的图片.如何解决这个问题?这是我的代码如下:

Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long.parseLong(PhotoId));
InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(context.getContentResolver(), uri);
return BitmapFactory.decodeStream(input);
Run Code Online (Sandbox Code Playgroud)

Cha*_*s B 0

您提供的代码只能访问默认照片。另外,您应该将联系人 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());
}
Run Code Online (Sandbox Code Playgroud)

您希望 mContactId 与您想要照片的联系人相对应。

如果您只想限制为 facebook 照片,则需要使用 ContactsContract.Data.RAW_CONTACT_ID,您应该使用您的联系人 ID 和基于 facebook 帐户的过滤器从 RawContacts 表中获取该 ID(假设您知道您使用哪个帐户)正在寻找...可能因同步提供程序实现而异...)


归档时间:

查看次数:

6968 次

最近记录:

12 年,8 月 前