我使用ContactsContracts.Contacts.PHOTO_ID获取了如下图像:
public Bitmap getBitmapFromId(Uri contactUri)
{
Bitmap bitmap=null;
String[] projection={ContactsContract.Contacts._ID,ContactsContract.Contacts.PHOTO_ID};
Cursor c=getContentResolver().query(contactUri, projection, null, null, null);
if(!isCursorBad(c))
{
int photo_id=c.getInt(c.getColumnIndex(ContactsContract.Contacts._ID));
Log.d(TAG, "The photo id is "+photo_id);
Cursor c2=getContentResolver().query(ContactsContract.Data.CONTENT_URI, new String[]{ContactsContract.CommonDataKinds.Photo.PHOTO}, ContactsContract.Data.CONTACT_ID+"=?"+" AND "+ContactsContract.Data.MIMETYPE+"=?", new String[]{String.valueOf(photo_id),ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE}, null);
if(!isCursorBad(c2))
{
byte[] data=c2.getBlob(0);
Log.d(TAG, "Got byte data of length "+data.length);
bitmap=BitmapFactory.decodeByteArray(data, 0, data.length);
}
}
return bitmap;
}
这只返回图像的缩略图。如何使用PHOTO_ID列获取完整尺寸的图像?
注意:我发现:
PHOTO_URI API LEVEL 11
PHOTO_THUMBNAIL_URI API LEVEL 11
PHOTO_FILE_ID API LEVEL 14
PHOTO_ID API LEVEL 05
因此,选择PHOTO_ID(目标API级别10及以上)。
有没有办法从ContactsProvider迷宫中获取全尺寸图像?
答案 0 :(得分:0)
您可以使用以下代码获取完整尺寸的照片,但我发现当我在Android 2.3.3(Gingerbread)上测试时这不起作用。我对此并不完全确定,但我认为姜饼只允许使用缩略图大小的照片(不是全尺寸)。
final Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId);
final Uri photo = Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.DISPLAY_PHOTO);