【发布时间】:2011-09-23 17:46:10
【问题描述】:
呸,另一种情况本应该很简单的事情被证明是非常耗时和痛苦的。
我正在使用它来查询联系人提供者:
private Cursor getContacts(){
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.PHOTO_ID
};
......
return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
}
这可以正常工作并检索联系人姓名,并且在少数联系人上显示 PHOTO_ID 字段的数字 ID,我认为这是我请求的 PHOTO_ID。但是后来我将该 ID 推送到此方法中以提取位图,它在每个联系人上都失败,并且每次流都为空。我正在针对一组联系人进行测试,其中包括一些带有 Android 联系人照片的联系人(我知道从 Facebook 联系人中提取照片存在一些问题)。
private Bitmap loadContactPhoto(long id) {
Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id);
InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(contentResolver, uri);
if (input == null) return null;
Bitmap bitmap = BitmapFactory.decodeStream(input);
return bitmap;
}
我错过了什么?
【问题讨论】:
标签: android android-contentprovider