2017-02-20 52 views
0

要獲得聯繫人照片的URI,你可以簡單地休耕的docs的Android得RAW_CONTACT圖像URI

Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId); 
return Uri.withAppendedPath(contactUri, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); 

但在我的情況下,我想告訴所有的單個聯繫人的一部分RAW_CONTACTS,在那裏我需要他們的高分辨率照片uri。那麼我怎樣才能獲得一個?

請注意,我對Contacts.Photo.PHOTO列下的數據表中的縮略圖BLOB不感興趣,但對高分辨率圖像沒有興趣。

+0

你有沒有試過[此鏈接](http://stackoverflow.com/a/3509210/3800164),似乎很有用你的問題? –

回答

1

您正在尋找ContactsContract.RawContacts.DisplayPhoto

下面是來自docs(它是寫作照片到RawContact)正式使用例子:

public void writeDisplayPhoto(long rawContactId, byte[] photo) { 
    Uri rawContactPhotoUri = Uri.withAppendedPath(
      ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId), 
      RawContacts.DisplayPhoto.CONTENT_DIRECTORY); 
    try { 
     AssetFileDescriptor fd = 
      getContentResolver().openAssetFileDescriptor(rawContactPhotoUri, "rw"); 
     OutputStream os = fd.createOutputStream(); 
     os.write(photo); 
     os.close(); 
     fd.close(); 
    } catch (IOException e) { 
     // Handle error cases. 
    } 
} 

以下是如何閱讀:

public byte[] readDisplayPhoto(long rawContactId) { 
    byte[] photo; 
    Uri rawContactPhotoUri = Uri.withAppendedPath(
      ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId), 
      RawContacts.DisplayPhoto.CONTENT_DIRECTORY); 
    try { 
     AssetFileDescriptor fd = getContentResolver().openAssetFileDescriptor(rawContactPhotoUri, "r"); 
     FileInputStream is = fd.createInputStream(); 
     is.read(photo); 
     is.close(); 
     fd.close(); 
     return photo 
    } catch (IOException e) { 
     // Handle error cases. 
    } 
}