2013-10-29 152 views
0
使用Android ContactProvider PHOTO_ID原圖

我已獲得使用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; 
} 

這僅返回image.How的縮略圖我可以得到充分的尺寸使用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

你可以使用下面的代碼得到全尺寸的照片,雖然我發現這在我測試Android 2.3.3(薑餅)時不起作用。我對此並不完全確定,但我認爲也許薑餅只允許縮略圖尺寸的照片(不是全尺寸)。

final Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId); 
final Uri photo = Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.DISPLAY_PHOTO);