这似乎适用于小图像:
ContentValues values = new ContentValues();
values.put(ContactsContract.Data.RAW_CONTACT_ID, id);
values.put(ContactsContract.Data.IS_SUPER_PRIMARY, 1);
values.put(ContactsContract.CommonDataKinds.Photo.PHOTO, photo);
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE);
if (photoRow >= 0) {
context.getContentResolver().update(ContactsContract.Data.CONTENT_URI, values, ContactsContract.Data._ID + " = " + photoRow, null);
} else {
context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
}
从文档中我意识到,对于大图像,我需要设置PHOTO_FILE_ID,因此我可以替换:
ContactsContract.CommonDataKinds.Photo.PHOTO
与:
ContactsContract.CommonDataKinds.Photo.PHOTO_FILE_ID
但是,然后我需要提供一个PHOTO_FILE_ID而不是原始数据。我的问题:
您自己的答案会奏效,但效率不高,因为需要将照片编码为SQL查询并通过Android
IPC传输。这也使它受制于Android的IPC大小限制1MB(即,如果您的照片太大,则内容提供商操作将失败)。
设置(创建或覆盖)RawContact的(主)照片的最有效方法是使用openAssetFileDescriptor
和这样的
ContactsContract.RawContacts.DisplayPhoto
URI(例如,从Android文档复制的示例):
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.
}
}
这种方法的唯一缺点是,它总是创建/替换的主要照片RawContact
。如果RawContact还没有照片,它将添加一张。
不幸的是没有办法用openAssetFileDescriptor
了PHOTO_FILE_ID
,所以你不能覆盖使用这种方法的ID标识的特定照片。但是,在现实生活中,大多数联系人最多只能有一张照片,所以这并不是一个真正的限制。
这将自动Photo.PHOTO
使用大照片的缩略图更新列,并分配一个PHOTO_FILE_ID
。
问题内容: 我正在尝试直接从我的应用程序更新我的电话簿的联系人。我可以添加和删除联系人,但是更新什么也没做! 在插入之后或当我抓住联系人时,我将收集CONTACT_ID(又称_ID)。 这是我的更新代码: 给我当前联系人的_ID值。 并给我联系人的名字。 给我他的照片uri。最后给我他的电话号码。 Log行为我提供了正确的_ID值,我认为问题不出在这里。我做错什么了吗? 谢谢。 问候。 V. 整个
问题内容: 给定透明的PNG以白色显示简单形状,是否有可能通过CSS更改其颜色?某种覆盖还是什么? 问题答案: 您可以将筛选器与和一起使用:筛选器相对于浏览器而言是较新的,但根据以下CanIUse表,超过90%的浏览器均支持它们 您可以将图像更改为灰度,棕褐色等(请看示例)。 因此,您现在可以使用滤镜更改PNG文件的颜色。
问题内容: 当iPhone的联系人有插入/更新事件时,我想得到通知。 是否可以收到有关特定联系人更改事件发生的通知给我的应用程序? 只是一个新手…对于IOS Swift。 我不期望完整的源代码。只是想知道它是否可能,并暗示。 提前致谢。 问题答案: 在iOS中,可以使用- 注册外部更改回叫通知器 实施回拨-
基本上,我有一个方法可以将Image从数据库加载到ImageView中,还有第二个方法可以更改图像,我成功地运行了这两个方法,没有出现异常,但是在change eImage()方法中的setImage之后,我需要更新什么以及如何(场景、阶段)是可能的。我知道在javafx中没有像swings中的repaint()这样的方法,那么我该如何处理呢?
我正在尝试创建以下图库: -一个大图像 -下面图库图像的缩略图 -大图像应在lightbox图库中单击后打开所有图像 我让lightbox画廊使用PhotoSwipe工作,当我点击大图像时,它就会触发。我也有缩略图在大图像下面的地方。我现在的问题是,当我单击其中一个缩略图时,我如何改变大图像?我见过很多例子(也是相当简单的例子),但在我的案例中似乎没有一个行得通。 下面是我为缩略图准备的代码: 我
我刚刚在文件夹下添加了一个新的可绘制文件夹。在drawable文件夹中,我复制了ic\U启动器。png文件来自可绘制hdpi文件夹。当我按下按钮时,我想通过新的图像更改标准的图像按钮。我写了一些代码,但当我启动应用程序时,它崩溃了。 编辑:我改成了这个,这个也不行。 编辑2:这很有效。感谢大家。