This is an automated email from the ASF dual-hosted git repository. erisu pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cordova-plugin-file.git
The following commit(s) were added to refs/heads/master by this push: new 28c935c feat(android): add READ_MEDIA_* permissions for Android 13+ (#566) 28c935c is described below commit 28c935cfceac09a194f94a71fb91a894657b001a Author: MauriceFrank <33732671+mauricefr...@users.noreply.github.com> AuthorDate: Tue Jul 4 19:02:50 2023 +0200 feat(android): add READ_MEDIA_* permissions for Android 13+ (#566) * Add READ_MEDIA - permissions for Android 13+ * Fix spelling in permssion string --------- Co-authored-by: maurice.frank <maurice.fr...@mway.io> --- src/android/FileUtils.java | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/android/FileUtils.java b/src/android/FileUtils.java index 24c0a40..de973da 100644 --- a/src/android/FileUtils.java +++ b/src/android/FileUtils.java @@ -100,12 +100,25 @@ public class FileUtils extends CordovaPlugin { private PendingRequests pendingRequests; /* - * We need both read and write when accessing the storage, I think. + * We need both read and write when accessing the storage, I think. (SDK Version < 33) + * + * If your app targets Android 13 (SDK 33) or higher and needs to access media files that other apps have created, + * you must request one or more of the following granular media permissions + * instead of the READ_EXTERNAL_STORAGE permission: + * + * READ_MEDIA_IMAGES + * READ_MEDIA_VIDEO + * READ_MEDIA_AUDIO + * + * Refer to: https://developer.android.com/about/versions/13/behavior-changes-13 */ private String [] permissions = { Manifest.permission.READ_EXTERNAL_STORAGE, - Manifest.permission.WRITE_EXTERNAL_STORAGE }; + Manifest.permission.WRITE_EXTERNAL_STORAGE, + Manifest.permission.READ_MEDIA_IMAGES, + Manifest.permission.READ_MEDIA_VIDEO, + Manifest.permission.READ_MEDIA_AUDIO}; // This field exists only to support getEntry, below, which has been deprecated private static FileUtils filePlugin; @@ -577,7 +590,12 @@ public class FileUtils extends CordovaPlugin { private void getReadPermission(String rawArgs, int action, CallbackContext callbackContext) { int requestCode = pendingRequests.createRequest(rawArgs, action, callbackContext); - PermissionHelper.requestPermission(this, requestCode, Manifest.permission.READ_EXTERNAL_STORAGE); + if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + PermissionHelper.requestPermissions(this, requestCode, + new String[]{Manifest.permission.READ_MEDIA_IMAGES, Manifest.permission.READ_MEDIA_VIDEO, Manifest.permission.READ_MEDIA_AUDIO}); + } else { + PermissionHelper.requestPermission(this, requestCode, Manifest.permission.READ_EXTERNAL_STORAGE); + } } private void getWritePermission(String rawArgs, int action, CallbackContext callbackContext) { @@ -586,7 +604,13 @@ public class FileUtils extends CordovaPlugin { } private boolean hasReadPermission() { - return PermissionHelper.hasPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE); + if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + return PermissionHelper.hasPermission(this, Manifest.permission.READ_MEDIA_IMAGES) + && PermissionHelper.hasPermission(this, Manifest.permission.READ_MEDIA_VIDEO) + && PermissionHelper.hasPermission(this, Manifest.permission.READ_MEDIA_AUDIO); + } else { + return PermissionHelper.hasPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE); + } } private boolean hasWritePermission() { --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cordova.apache.org For additional commands, e-mail: commits-h...@cordova.apache.org