Я создаю код для программного обновления изображения изображения в моем телефоне Android. Я перепробовал много методов, но ни одно из решений не помогло мне.
Я получаю содержимое изображения как byteArray
из моего последнего действия, а затем преобразую его в Bitmap
, и они сжимают его, а затем снова преобразуют в ByteArray
и передают его вышеуказанному методу.
Все еще не повезло. Не обновляется фотография выбранного контакта. Что я делаю не так в этом сценарии?
This is my method
public void changeContactImage(String contactId, byte[] b_array) {
Log.d("Bitmap_Arrrrray", b_array.toString());
ArrayList<ContentProviderOperation> ops = new ArrayList < > ();
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(ContactsContract.Data.IS_SUPER_PRIMARY, 1)
//.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE)
//.withValue(ContactsContract.CommonDataKinds.Photo.DATA15, b_array).build());
.withValue(ContactsContract.Contacts.Photo.DATA15, b_array).build());
try {
getApplicationContext().getContentResolver().
applyBatch(ContactsContract.AUTHORITY, ops);
} catch (RemoteException e) {
Log.d("RemoteException", e.toString());
} catch (OperationApplicationException e) {
Log.d("OperationException", e.toString());
}
}
Calling the above method will be like
Bitmap_Array = getIntent().getByteArrayExtra("contact_image");
bmp = BitmapFactory.decodeByteArray(Bitmap_Array, 0, Bitmap_Array.length);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 80, baos);
TMP_Bitmap_Array = baos.toByteArray();
LV_Contacts.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// bitmap = (Bitmap)getIntent().getParcelableExtra("Bitmap");
// save_to_contact(bitmap);
String C_Id = String.valueOf(parent.getItemIdAtPosition(position));
changeContactImage(C_Id, Bitmap_Array );
}
});