How to Update contact image using contact provider operation.

android, android-contacts, android-imageview

Solution

Try the following

Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();
File f = new File(picturePath);
Uri photoUri = Uri.fromFile(f);

insted of this replace the following.

Bitmap bitmap = ((BitmapDrawable) image.getDrawable())
                    .getBitmap();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 80, baos);
byte[] b = baos.toByteArray();

and your array list adding code should be.

ops.add(ContentProviderOperation
                                .newUpdate(
                                        ContactsContract.Data.CONTENT_URI)
                                .withSelection(
                                        ContactsContract.Data.CONTACT_ID
                                                + " = ? AND "
                                                + ContactsContract.Data.MIMETYPE
                                                + " = ?",
                                        new String[] {
                                                contactid,
                                                ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE })
                                .withValue(Photo.DATA15, b).build());

Problem

The following code is used to update the image but it throws illegal or bad value exception.any body can solve this. ``` Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap(); File f = new File(picturePath); Uri photoUri = Uri.fromFile(f); ``` add to array list coding ``` ops.add(ContentProviderOperation .newUpdate(ContactsContract.Data.CONTENT_URI) .withSelection( ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?", new String[] { contactid, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE }) .withValue(Photo.Photo_Uri,photoUri ).build()); ```

Original source