2015-08-08 43 views
0

我正在閱讀設備中的聯繫人信息並使用ez-vcard0.9.5在vcf文件中進行書寫。當我恢復文件時,它不會恢復聯繫人照片。無法在vcf中使用ez-vcard0.9.5在android中編寫聯繫人照片

予讀取使用下面的代碼從器件接觸的照片:

public static byte[] getContactPictureByte(Context context,ContentResolver cr, Cursor cur, String id) throws IOException { 

    Bitmap photo = null; 
    InputStream inputStream = ContactsContract.Contacts.openContactPhotoInputStream(cr, ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, new Long(id))); 

    byte[] b = null; 
    if (inputStream != null) { 
     photo = BitmapFactory.decodeStream(inputStream); 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     photo.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
     b = baos.toByteArray(); 
     Log.v("photo","b.lemgth: " + b.length); 
     inputStream.close(); 
    } 
    return b; 
} 

,然後加入返回的字節數組VCF。

pictureByte = ContactUtils.getContactPictureByte(context,cr, cur, id); 
vcard.addPhoto(new Photo(pictureByte, ImageType.JPEG)); 
String vcardText = Ezvcard.write(vcard).version(VCardVersion.V3_0).go(); 

當我打開使用記事本的VCF檔案,我發現了「照片」標籤的值太長,它持續到文件的末尾,而VCF格式丟失它的結束標記和其它信息。 照片標籤開始這樣

PHOTO; TYPE = PNG;編碼= B:/ 9J/4AAQSk ............ [直到結束]

誰能好心給我解決方案?

謝謝。

回答

0

您確定您正在查看正確的文件嗎?您的代碼示例正在生成一個字符串,而不是寫入文件。另外,ez-vcard將TYPE參數的值寫入小寫字母,因此如果ez-vcard寫入它,它應該看起來像這樣:PHOTO;TYPE=png;ENCODING=b:

相關問題