ExifInterface не обновляет теги exif

Я пытаюсь изменить теги exif с помощью ExifInterface. Я использую setAttribute() и вызываю saveAttributes(). Тег сохраняется временно, затем в следующий раз старое значение все еще присутствует и не обновляется................

Пример:

ExifInterface exifInterface = new ExifInterface(filePath);

String o1 = exifInterface.readAttribute(TAG_ORIENTATION); //o1 is "0"

exifInterface.setAttribute(TAG_ORIENTATION, "90");
exifInterface.saveAttributes();

String o2 = exifInterface.readAttribute(TAG_ORIENTATION); //o2 is "90"

// relaunch app, read attribute for same photo

String o3 = exifInterface.readAttribute(TAG_ORIENTATION); //o3 is "0" again, sould be "90"

Ответ 1

На всякий случай кто-то ищет чистое решение для Android: исходный код верен, но значение атрибута TAG_ORIENTATION должно быть значением от 1 до 8, как описано в эта страница.

Вы должны подавить строку с вызовом метода readAttribute(), этот метод не существует в классе ExifInterface. Замените его exifInterface.getAttribute(ExifInterface.TAG_ORIENTATION, defaultValue), если вы хотите прочитать значение до и после изменения.

Ответ 2

Также убедитесь, что ваше приложение имеет разрешение WRITE_EXTERNAL_STORAGE

Ответ 3

Вы должны использовать что-то вроде

exifInterface.setAttribute(TAG_ORIENTATION, ""+ExifInterface.ORIENTATION_ROTATE_90);

вместо

Ответ 4

Попробуйте следующее:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));