gpt4 book ai didi

android - 如何在 ContentProviderOperation 中添加联系人图片?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:03:32 24 4
gpt4 key购买 nike

通过下面的代码 fragment ,我可以将我所有的联系人与 REST API 同步。太好了,一切正常。我可以添加姓名和电话号码的人。

不幸的是,我现在尝试从 SDCard 添加图片(我得到的是位图或可绘制对象)但没有成功

有人可以指出实现此目标的方法或给我一些线索吗?

非常感谢!

这是我目前使用的示例代码:

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
int rawContactInsertIndex = ops.size();

ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
.withValue(RawContacts.ACCOUNT_TYPE, null)
.withValue(RawContacts.ACCOUNT_NAME,null )
.build());
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex)
.withValue(Data.MIMETYPE,Phone.CONTENT_ITEM_TYPE)
.withValue(Phone.NUMBER, "9X-XXXXXXXXX")
.build());
ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
.withValue(Data.MIMETYPE,StructuredName.CONTENT_ITEM_TYPE)
.withValue(StructuredName.DISPLAY_NAME, "Mike Sullivan")
.build());
ContentProviderResult[] res = getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

最佳答案

请试试这个

Bitmap bmImage = BitmapFactory.decodeFile(imagePath);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmImage.compress(Bitmap.CompressFormat.JPEG, 80, baos);
byte[] b = baos.toByteArray();



ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Photo.DATA15,b)
.build());

关于android - 如何在 ContentProviderOperation 中添加联系人图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8474030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com