Android 获取 RAW_CONTACT 图片 uri
Android get RAW_CONTACT image uri
要获取联系人照片 uri,您只需休假 docs:
Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId);
return Uri.withAppendedPath(contactUri, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);
但在我的例子中,我想显示属于单个联系人的所有 RAW_CONTACTS,因为我需要他们的高分辨率照片 uri。那么如何才能获得呢?
请注意,我对您可以在 Contacts.Photo.PHOTO
列下的数据 table 中找到的缩略图 BLOB 不感兴趣,但对高分辨率图像不感兴趣。
您正在寻找 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.
}
}
要获取联系人照片 uri,您只需休假 docs:
Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId);
return Uri.withAppendedPath(contactUri, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);
但在我的例子中,我想显示属于单个联系人的所有 RAW_CONTACTS,因为我需要他们的高分辨率照片 uri。那么如何才能获得呢?
请注意,我对您可以在 Contacts.Photo.PHOTO
列下的数据 table 中找到的缩略图 BLOB 不感兴趣,但对高分辨率图像不感兴趣。
您正在寻找 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.
}
}