gpt4 book ai didi

java - 将联系人的照片写入vcf文件,android

转载 作者:太空狗 更新时间:2023-10-29 12:48:08 27 4
gpt4 key购买 nike

我正在使用显示所有联系人列表的代码。当我从列表中选择一个联系人时,联系人的详细信息将显示并保存在 .vcf 文件中(以正确的 vcard 格式),工作正常。当我选择一个也有照片的联系人时,它会在 imageView 中显示照片,但我不知道如何将照片写入 vcf 文件。我用过这些线,

Uri photoUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,Integer.parseInt(item));
Bitmap photoBitmap;
ContentResolver cr = getContentResolver();
InputStream is = ContactsContract.Contacts.openContactPhotoInputStream(cr, photoUri);
photoBitmap = BitmapFactory.decodeStream(is);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
photoBitmap.compress(CompressFormat.JPEG, 100 , bos);
byte[] bitmapdata = bos.toByteArray();
imageEncoded = Base64.encodeToString(bitmapdata,Base64.DEFAULT);

String content = "BEGIN:VCARD\nVERSION:3.0\nCLASS:PUBLIC\nPRODID:-//class_vcard from TroyWolf.com//NONSGML Version 1//EN\nFN:"+contactName+"\nTEL;TYPE=cell,voice:"+number+"\nPHOTO;TYPE=JPEG;ENCODING=BASE64:"+imageEncoded+"\nTZ:+0000\nEND:VCARD";

但是我在读取联系人时遇到错误(“由于意外原因无法解析 vCard,行无效:”)谁能帮我解决这个问题!

最佳答案

尝试将 ENCODING 参数的值从 BASE64 更改为 BB 是 3.0 vCards 中使用的正确值。

此外,vCards 的正确换行顺序是 \r\n,而不是 \n

您可能对使用 vCard 库生成 vCard 感兴趣。 ez-vcard就是这样一个库(免责声明:我是作者)。

VCard vcard = new VCard();
vcard.setClassification("PUBLIC");
vcard.setProdId("-//class_vcard from TroyWolf.com//NONSGML Version 1//EN");
vcard.setFormattedName(contactName);

TelephoneType tel = vcard.addTelephoneNumber(number);
tel.addType(TelephoneTypeParameter.CELL);
tel.addType(TelephoneTypeParameter.VOICE);

PhotoType photo = new PhotoType(bitmapdata, ImageTypeParameter.JPEG);
vcard.addPhoto(photo);

vcard.setTimezone(new TimezoneType(0, 0));

String content = Ezvcard.write(vcard).version(VCardVersion.V3_0).prodId(false).go();

关于java - 将联系人的照片写入vcf文件,android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15738628/

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