From 666f0bee705f93b0f3a9a65d4bde3c2f14ea0763 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Sun, 31 Dec 2023 22:54:47 +0100 Subject: [PATCH] feat: Check if external storage permission is granted on old Android version if media is selected --- .../myzel394/alibi/helpers/BatchesFolder.kt | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/app/myzel394/alibi/helpers/BatchesFolder.kt b/app/src/main/java/app/myzel394/alibi/helpers/BatchesFolder.kt index 7793045..8e10bb2 100644 --- a/app/src/main/java/app/myzel394/alibi/helpers/BatchesFolder.kt +++ b/app/src/main/java/app/myzel394/alibi/helpers/BatchesFolder.kt @@ -1,5 +1,6 @@ package app.myzel394.alibi.helpers +import android.Manifest import android.content.ContentUris import android.content.ContentValues import app.myzel394.alibi.ui.MEDIA_RECORDINGS_PREFIX @@ -21,6 +22,7 @@ import androidx.core.net.toFile import app.myzel394.alibi.ui.RECORDER_INTERNAL_SELECTED_VALUE import app.myzel394.alibi.ui.RECORDER_MEDIA_SELECTED_VALUE import app.myzel394.alibi.ui.SUPPORTS_SCOPED_STORAGE +import app.myzel394.alibi.ui.utils.PermissionHelper import kotlinx.coroutines.CompletableDeferred import kotlin.reflect.KFunction3 @@ -286,6 +288,7 @@ abstract class BatchesFolder( BatchType.MEDIA -> { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { // TODO: Also delete pending recordings + // --> Doesn't seem to be possible :/ context.contentResolver.delete( scopedMediaContentUri, "${MediaStore.MediaColumns.DISPLAY_NAME} LIKE '$mediaPrefix%'", @@ -382,8 +385,20 @@ abstract class BatchesFolder( return when (type) { BatchType.INTERNAL -> true BatchType.CUSTOM -> getCustomDefinedFolder().canWrite() && getCustomDefinedFolder().canRead() - // TODO: Add support for < Android 10 - BatchType.MEDIA -> true + BatchType.MEDIA -> { + if (SUPPORTS_SCOPED_STORAGE) { + return true + } + + return PermissionHelper.hasGranted( + context, + Manifest.permission.READ_EXTERNAL_STORAGE + ) && + PermissionHelper.hasGranted( + context, + Manifest.permission.WRITE_EXTERNAL_STORAGE + ) + } } }