diff --git a/android/app/src/main/java/deckers/thibault/aves/model/provider/ImageProvider.java b/android/app/src/main/java/deckers/thibault/aves/model/provider/ImageProvider.java index 68490000c..dbedf36a3 100644 --- a/android/app/src/main/java/deckers/thibault/aves/model/provider/ImageProvider.java +++ b/android/app/src/main/java/deckers/thibault/aves/model/provider/ImageProvider.java @@ -12,6 +12,8 @@ import android.media.ExifInterface; import android.media.MediaScannerConnection; import android.net.Uri; import android.os.Build; +import android.os.Handler; +import android.os.Looper; import android.os.ParcelFileDescriptor; import android.provider.MediaStore; import android.util.Log; @@ -76,7 +78,7 @@ public abstract class ImageProvider { Uri sdCardTreeUri = PermissionManager.getSdCardTreeUri(activity); if (sdCardTreeUri == null) { Runnable runnable = () -> rename(activity, oldPath, oldUri, mimeType, newFilename, callback); - PermissionManager.showSdCardAccessDialog(activity, runnable); + new Handler(Looper.getMainLooper()).post(() -> PermissionManager.showSdCardAccessDialog(activity, runnable)); return; } renamed = StorageUtils.renameOnSdCard(activity, sdCardTreeUri, Env.getStorageVolumes(activity), oldPath, newFilename); @@ -162,7 +164,7 @@ public abstract class ImageProvider { if (onSdCard) { if (PermissionManager.getSdCardTreeUri(activity) == null) { Runnable runnable = () -> rotate(activity, path, uri, mimeType, clockwise, callback); - PermissionManager.showSdCardAccessDialog(activity, runnable); + new Handler(Looper.getMainLooper()).post(() -> PermissionManager.showSdCardAccessDialog(activity, runnable)); return; } // copy original file to a temporary file for editing @@ -241,7 +243,7 @@ public abstract class ImageProvider { boolean onSdCard = Env.isOnSdCard(activity, path); if (onSdCard && PermissionManager.getSdCardTreeUri(activity) == null) { Runnable runnable = () -> rotate(activity, path, uri, mimeType, clockwise, callback); - PermissionManager.showSdCardAccessDialog(activity, runnable); + new Handler(Looper.getMainLooper()).post(() -> PermissionManager.showSdCardAccessDialog(activity, runnable)); return; } diff --git a/android/app/src/main/java/deckers/thibault/aves/model/provider/MediaStoreImageProvider.java b/android/app/src/main/java/deckers/thibault/aves/model/provider/MediaStoreImageProvider.java index e38ddce9f..5230ed873 100644 --- a/android/app/src/main/java/deckers/thibault/aves/model/provider/MediaStoreImageProvider.java +++ b/android/app/src/main/java/deckers/thibault/aves/model/provider/MediaStoreImageProvider.java @@ -7,6 +7,8 @@ import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.os.Build; +import android.os.Handler; +import android.os.Looper; import android.provider.MediaStore; import android.util.Log; @@ -178,7 +180,7 @@ public class MediaStoreImageProvider extends ImageProvider { Uri sdCardTreeUri = PermissionManager.getSdCardTreeUri(activity); if (sdCardTreeUri == null) { Runnable runnable = () -> delete(activity, path, uri, callback); - PermissionManager.showSdCardAccessDialog(activity, runnable); + new Handler(Looper.getMainLooper()).post(() -> PermissionManager.showSdCardAccessDialog(activity, runnable)); return; }