Change contact picture programmatically

百般思念 提交于 2019-12-01 06:23:48
String contactId ="10001"; // change it as your IDs
    if (mBitmap != null) {
                // Picture
                try {
                    ByteArrayOutputStream image = new ByteArrayOutputStream();
                    mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, image);

                    Uri rawContactUri = null;
                    Cursor rawContactCursor = managedQuery(
                            ContactsContract.RawContacts.CONTENT_URI,
                            new String[]{ContactsContract.RawContacts._ID},
                            ContactsContract.RawContacts.CONTACT_ID + " = " + contactId,
                            null,
                            null);
                    if (!rawContactCursor.isAfterLast()) {
                        rawContactCursor.moveToFirst();
                        rawContactUri = ContactsContract.RawContacts.CONTENT_URI.buildUpon().appendPath("" + rawContactCursor.getLong(0)).build();
                    }
                    rawContactCursor.close();

                    ContentValues values = new ContentValues();
                    int photoRow = -1;
                    String where111 = ContactsContract.Data.RAW_CONTACT_ID + " == " +
                            ContentUris.parseId(rawContactUri) + " AND " + ContactsContract.Data.MIMETYPE + "=='" +
                            ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'";
                    Cursor cursor = managedQuery(
                            ContactsContract.Data.CONTENT_URI,
                            null,
                            where111,
                            null,
                            null);
                    int idIdx = cursor.getColumnIndexOrThrow(ContactsContract.Data._ID);
                    if (cursor.moveToFirst()) {
                        photoRow = cursor.getInt(idIdx);
                    }

                    cursor.close();


                    values.put(ContactsContract.Data.RAW_CONTACT_ID,
                            ContentUris.parseId(rawContactUri));
                    values.put(ContactsContract.Data.IS_SUPER_PRIMARY, 1);
                    values.put(ContactsContract.CommonDataKinds.Photo.PHOTO, image.toByteArray());
                    values.put(ContactsContract.Data.MIMETYPE,
                            ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE);
                    if (photoRow >= 0) {
                        getContentResolver().update(
                                ContactsContract.Data.CONTENT_URI,
                                values,
                                ContactsContract.Data._ID + " = " + photoRow, null);
                    } else {
                        getContentResolver().insert(
                                ContactsContract.Data.CONTENT_URI,
                                values);
                    }
                } catch (Exception e) {
                    Log.e("!_@@Image_Exception", e + "");
                }
            }
 try {
            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
       } catch (Exception e) {
            Log.e("@@@@@UPLOADERR", e + "");
        }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!