From 5cacf7767d21c554b2002cd4bd994b8cb84d6e9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20Kr=C3=BCger?= Date: Tue, 14 Sep 2021 13:54:20 +0200 Subject: [PATCH] Ask for READ_EXTERNAL_STORAGE permsssion for API level 30 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since API level 30 the WRITE_EXTERNAL_STORAGE permission will be ignored. Instead the READ_EXTERNAL_STORAGE permission must be used. See: https://developer.android.com/training/data-storage Signed-off-by: Tim Krüger --- .../talk/jobs/UploadAndShareFilesWorker.kt | 73 ++++++++++++++----- 1 file changed, 53 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt b/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt index c5e20bffe..e315ab3f3 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt +++ b/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt @@ -213,31 +213,64 @@ class UploadAndShareFilesWorker(val context: Context, workerParameters: WorkerPa const val META_DATA = "META_DATA" fun isStoragePermissionGranted(context: Context): Boolean { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - return if (PermissionChecker.checkSelfPermission( - context, - Manifest.permission.WRITE_EXTERNAL_STORAGE - ) == PermissionChecker.PERMISSION_GRANTED - ) { - Log.d(TAG, "Permission is granted") - true - } else { - Log.d(TAG, "Permission is revoked") - false + when { + Build.VERSION.SDK_INT > 29 -> { + return if (PermissionChecker.checkSelfPermission( + context, Manifest.permission + .READ_EXTERNAL_STORAGE + ) == PermissionChecker.PERMISSION_GRANTED + ) { + Log.d(TAG, "Permission is granted (SDK 30 or greater)") + true + } else { + Log.d(TAG, "Permission is revoked (SDK 30 or greater)") + false + } + } + Build.VERSION.SDK_INT >= Build.VERSION_CODES.M -> { + return if (PermissionChecker.checkSelfPermission( + context, + Manifest.permission.WRITE_EXTERNAL_STORAGE + ) == PermissionChecker.PERMISSION_GRANTED + ) { + Log.d(TAG, "Permission is granted") + true + } else { + Log.d(TAG, "Permission is revoked") + false + } + } + else -> { // permission is automatically granted on sdk<23 upon installation + Log.d(TAG, "Permission is granted") + return true } - } else { // permission is automatically granted on sdk<23 upon installation - Log.d(TAG, "Permission is granted") - return true } } fun requestStoragePermission(controller: Controller) { - controller.requestPermissions( - arrayOf( - Manifest.permission.WRITE_EXTERNAL_STORAGE - ), - REQUEST_PERMISSION - ) + + + when { + Build.VERSION.SDK_INT > 29 -> { + controller.requestPermissions( + arrayOf( + Manifest.permission.READ_EXTERNAL_STORAGE + ), + REQUEST_PERMISSION + ) + } + Build.VERSION.SDK_INT >= Build.VERSION_CODES.M -> { + controller.requestPermissions( + arrayOf( + Manifest.permission.WRITE_EXTERNAL_STORAGE + ), + REQUEST_PERMISSION + ) + } + else -> { // permission is automatically granted on sdk<23 upon installation + + } + } } } }