fixed android looper to show dialog for SD card permission

This commit is contained in:
Thibault Deckers 2020-04-25 09:36:19 +09:00
parent a08c5a3369
commit c1d6b95829
2 changed files with 8 additions and 4 deletions

View file

@ -12,6 +12,8 @@ import android.media.ExifInterface;
import android.media.MediaScannerConnection; import android.media.MediaScannerConnection;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.os.ParcelFileDescriptor; import android.os.ParcelFileDescriptor;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.util.Log; import android.util.Log;
@ -76,7 +78,7 @@ public abstract class ImageProvider {
Uri sdCardTreeUri = PermissionManager.getSdCardTreeUri(activity); Uri sdCardTreeUri = PermissionManager.getSdCardTreeUri(activity);
if (sdCardTreeUri == null) { if (sdCardTreeUri == null) {
Runnable runnable = () -> rename(activity, oldPath, oldUri, mimeType, newFilename, callback); Runnable runnable = () -> rename(activity, oldPath, oldUri, mimeType, newFilename, callback);
PermissionManager.showSdCardAccessDialog(activity, runnable); new Handler(Looper.getMainLooper()).post(() -> PermissionManager.showSdCardAccessDialog(activity, runnable));
return; return;
} }
renamed = StorageUtils.renameOnSdCard(activity, sdCardTreeUri, Env.getStorageVolumes(activity), oldPath, newFilename); renamed = StorageUtils.renameOnSdCard(activity, sdCardTreeUri, Env.getStorageVolumes(activity), oldPath, newFilename);
@ -162,7 +164,7 @@ public abstract class ImageProvider {
if (onSdCard) { if (onSdCard) {
if (PermissionManager.getSdCardTreeUri(activity) == null) { if (PermissionManager.getSdCardTreeUri(activity) == null) {
Runnable runnable = () -> rotate(activity, path, uri, mimeType, clockwise, callback); Runnable runnable = () -> rotate(activity, path, uri, mimeType, clockwise, callback);
PermissionManager.showSdCardAccessDialog(activity, runnable); new Handler(Looper.getMainLooper()).post(() -> PermissionManager.showSdCardAccessDialog(activity, runnable));
return; return;
} }
// copy original file to a temporary file for editing // copy original file to a temporary file for editing
@ -241,7 +243,7 @@ public abstract class ImageProvider {
boolean onSdCard = Env.isOnSdCard(activity, path); boolean onSdCard = Env.isOnSdCard(activity, path);
if (onSdCard && PermissionManager.getSdCardTreeUri(activity) == null) { if (onSdCard && PermissionManager.getSdCardTreeUri(activity) == null) {
Runnable runnable = () -> rotate(activity, path, uri, mimeType, clockwise, callback); Runnable runnable = () -> rotate(activity, path, uri, mimeType, clockwise, callback);
PermissionManager.showSdCardAccessDialog(activity, runnable); new Handler(Looper.getMainLooper()).post(() -> PermissionManager.showSdCardAccessDialog(activity, runnable));
return; return;
} }

View file

@ -7,6 +7,8 @@ import android.content.Context;
import android.database.Cursor; import android.database.Cursor;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.util.Log; import android.util.Log;
@ -178,7 +180,7 @@ public class MediaStoreImageProvider extends ImageProvider {
Uri sdCardTreeUri = PermissionManager.getSdCardTreeUri(activity); Uri sdCardTreeUri = PermissionManager.getSdCardTreeUri(activity);
if (sdCardTreeUri == null) { if (sdCardTreeUri == null) {
Runnable runnable = () -> delete(activity, path, uri, callback); Runnable runnable = () -> delete(activity, path, uri, callback);
PermissionManager.showSdCardAccessDialog(activity, runnable); new Handler(Looper.getMainLooper()).post(() -> PermissionManager.showSdCardAccessDialog(activity, runnable));
return; return;
} }