SQLiteException Невозможно преобразовать BLOB в строку, когда у контакта есть фотография. Android
В своем коде я обновляю контактную информацию, включая имя, адрес, адрес электронной почты и фотографию. При контакте уже нет фото все ок. Но после назначения фотографии для контакта я получаю android.database.sqlite.SQLiteException: unknown error: невозможно преобразовать BLOB в строку при каждой операции обновления.
Мой код для добавления фото в контакт
Bitmap bit =getBitmap();
ByteArrayOutputStream streamy = new ByteArrayOutputStream();
bit.compress(CompressFormat.PNG, 0, streamy);
byte[] photo = streamy.toByteArray();
ContentValues values = new ContentValues();
values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
values.put(ContactsContract.Data.IS_SUPER_PRIMARY, 1);
values.put(ContactsContract.CommonDataKinds.Photo.PHOTO, photo);
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE);
try {
if (getPhotoUri(rawContactId) != null) {
ContactHelper.context.getContentResolver().update(ContactsContract.Data.CONTENT_URI, values,
String.format("%s = ?", ContactsContract.Data.RAW_CONTACT_ID), new String[] {String.format("%d", rawContactId)});
} else {
ContactHelper.context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
}
} catch (Exception ex) {
ex.printStackTrace();
}
Мой код для изменения имени контакта
ArrayList ops = new ArrayList();
ops.add( ContentProviderOperation.newUpdate( Data.CONTENT_URI )
.withSelection( Data.RAW_CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE + "'",
new String[] { String.valueOf( rawContactId ) } )
.withValue( ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, contact.getName() )
.build() );
try {
ContentResolver cr = context.getContentResolver();
cr.applyBatch(ContactsContract.AUTHORITY, ops);
} catch (Exception e) {
e.printStackTrace();
}