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)
您提供的代码只能访问默认照片。另外,您应该将联系人 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 次 |
| 最近记录: |