2011-11-22 83 views
2

我正在处理一个应用程序,在该应用程序中我需要以编程方式存储联系人。我已成功保存联系人,但无法保存联系人图片。Android以编程方式保存联系人图像

我没有找到任何相同的例子。

任何帮助,将不胜感激。

+1

你已经试过了什么?图像的格式是什么?你有任何代码发布? – ethan

+0

在发布此问题之前,您是否真正搜索过此网站?重复的问题http://stackoverflow.com/q/4879134/346309 – JPM

回答

2

要在初始插入过程中保存照片

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

// intial setup 
ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI) 
     .withValue(RawContacts.ACCOUNT_TYPE, accountType) 
     .withValue(RawContacts.ACCOUNT_NAME, accountName) 
     .build()); 

// add name with rawId backreference 
ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) 
      .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex) 
      .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) 
      .withValue(StructuredName.DISPLAY_NAME, "John Smith") 
      .build()); 

// add the photo 
ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) 
      .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
      .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo. CONTENT_ITEM_TYPE) 
      .withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, bitmapByteArray 
      .build()); 

getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 

哪里bitmapByteArray是位图的字节数组要附加到取得联系,从位图图像的字节数组

的一种方式

public byte[] toByteArray(Bitmap bitmap) { 
     ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 80, stream); 
     return stream.toByteArray(); 
} 
+0

你救了我的命 –

相关问题