2012-12-21 43 views
4

我正在處理一個示例應用程序,只是爲了插入,更新和刪除本機android聯繫人。我能夠成功插入,更新和刪除聯繫人。但更新聯繫人照片的問題。下面的圖片是觀察哪個同一聯繫人有兩個不同的問題。 figure 1 figure2如何更新android上的本地聯繫人照片?

更新接觸之後,第一圖像被顯示還是舊的圖像。但是當我查看完整的詳細信息時,我可以查看第二張圖片中顯示的最新更新的聯繫人圖片。以下是更新聯繫人圖片的代碼。

mBitmap =getAllowedPhotoBitmap(photo); 
mBitmap = ThumbnailUtils.extractThumbnail(mBitmap, THUMBNAIL_SIZE, THUMBNAIL_SIZE); 
ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    if(mBitmap!=null){ // If an image is selected successfully 
     mBitmap.compress(Bitmap.CompressFormat.PNG ,100, stream); 
     op = ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI); 
     op.withSelection(ContactsContract.Data.CONTACT_ID + "=?" + " AND " +    ContactsContract.Data.MIMETYPE + "=?", new String[{String.valueOf(native_contactid), ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE}); 
    op.withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, stream.toByteArray()); 
    ops.add(op.build()); 
} 

問題是什麼,我哪裏出錯了?

回答

0

這個文件將幫助您與聯繫ID聯繫組圖像

https://github.com/heinrisch/Contact-Picture-Sync/blob/master/src/heinrisch/contact/picture/sync/ContactHandler.java

void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK) { 
     // Check for the request code, we might be usign multiple 
     if (requestCode == PICK_CONTACT_REQUEST) { 
      Uri contactUri = data.getData();     
      String[] projection = {Phone.CONTACT_ID,Phone.NUMBER,ContactsContract.Data.RAW_CONTACT_ID,ContactsContract.Data._ID }; 
      Cursor cursor = getContentResolver().query(contactUri, projection, null, null, null); 
      cursor.moveToFirst(); 

      int columcontactID = cursor.getColumnIndex(Phone.CONTACT_ID); 
      String contactID = cursor.getString(columcontactID); 

      Bitmap item = (imgBg.getVisibleRectangleBitmap()); 

      setContactPicture(AtWallpaperDetails.this, contactID, item); 
     } 
    } 
} 
相關問題