Я создал функцию для сохранения выбранного изображения из галереи. Я понимаю, что когда изображение сохраняется в первый раз, все в порядке. Но если процесс начинается снова, кажется, что изображение сохраняется (с тем же именем), но изображение не меняется в проводнике. Оно просто сохраняет старое растровое изображение. Я тестировал на двух разных устройствах, но результат тот же. На самом деле на Infinix hot 7, но результат тот же.
public static String saveImage(Bitmap bitmap, File[] folders, File file, Context context) {
for (File folder:folders) {
if (!folder.exists()) {
folder.mkdirs();
}
}
if (file.exists ()) {
file.delete();
}
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, bytes);
try {
FileOutputStream out = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
Вы можете видеть, что я выбрал фотографию зеленой природы, но она регистрирует фотографию старого красного дерева.
После сохранения изображения в галерее вы должны обновить изображение до системы для галереи и проводника.
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(myNewFile)));
Хорошо, я рад, что это сработало, и проверьте файл в другом проводнике, например, в проводнике es и т. д.
Спасибо. Это работает с некоторыми проводниками, но не с некоторыми
хорошо, я знал, потому что это также зависит от проводника, который вы используете. это проблема с эксплорером
Большое спасибо. Это сработало для галереи, но не для исследователя.