2011-11-22 67 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

你救了我的命 –

相關問題