【问题标题】:How to update a native contact photo on android?如何在 android 上更新本机联系人照片?
【发布时间】:2012-12-21 12:19:54
【问题描述】:

我正在开发一个示例应用程序,只是为了插入、更新和删除本机 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());
}

问题是什么,我哪里出错了?

【问题讨论】:

    标签: android android-contacts android-contentresolver


    【解决方案1】:
    【解决方案2】:

    此文件将帮助您设置带有联系人 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);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-10
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多