@@ -533,7 +533,7 @@ public void run(JSONArray args) throws FileNotFoundException, JSONException, Mal
533533
534534 private void getReadPermission (String rawArgs , int action , CallbackContext callbackContext ) {
535535 int requestCode = pendingRequests .createRequest (rawArgs , action , callbackContext );
536- if (android . os . Build .VERSION .SDK_INT >= Build .VERSION_CODES .TIRAMISU ) {
536+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .TIRAMISU ) {
537537 PermissionHelper .requestPermissions (this , requestCode ,
538538 new String []{Manifest .permission .READ_MEDIA_IMAGES , Manifest .permission .READ_MEDIA_VIDEO , Manifest .permission .READ_MEDIA_AUDIO });
539539 } else {
@@ -542,10 +542,8 @@ private void getReadPermission(String rawArgs, int action, CallbackContext callb
542542 }
543543
544544 private void getWritePermission (String rawArgs , int action , CallbackContext callbackContext ) {
545- if (android .os .Build .VERSION .SDK_INT < Build .VERSION_CODES .TIRAMISU ) {
546- int requestCode = pendingRequests .createRequest (rawArgs , action , callbackContext );
547- PermissionHelper .requestPermission (this , requestCode , Manifest .permission .WRITE_EXTERNAL_STORAGE );
548- }
545+ int requestCode = pendingRequests .createRequest (rawArgs , action , callbackContext );
546+ PermissionHelper .requestPermission (this , requestCode , Manifest .permission .WRITE_EXTERNAL_STORAGE );
549547 }
550548
551549 /**
@@ -558,7 +556,7 @@ private void getWritePermission(String rawArgs, int action, CallbackContext call
558556 * @return
559557 */
560558 private boolean hasReadPermission () {
561- if (android . os . Build .VERSION .SDK_INT >= Build .VERSION_CODES .TIRAMISU ) {
559+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .TIRAMISU ) {
562560 return PermissionHelper .hasPermission (this , Manifest .permission .READ_MEDIA_IMAGES )
563561 && PermissionHelper .hasPermission (this , Manifest .permission .READ_MEDIA_VIDEO )
564562 && PermissionHelper .hasPermission (this , Manifest .permission .READ_MEDIA_AUDIO );
@@ -567,11 +565,21 @@ private boolean hasReadPermission() {
567565 }
568566 }
569567
568+ private boolean canHaveReadPermission () {
569+ return true ;
570+ }
571+
572+ /**
573+ * Starting with API 33, requesting WRITE_EXTERNAL_STORAGE is an auto permission rejection.
574+ *
575+ * @return
576+ */
570577 private boolean hasWritePermission () {
571- // Starting with API 33, requesting WRITE_EXTERNAL_STORAGE is an auto permission rejection
572- return android .os .Build .VERSION .SDK_INT >= Build .VERSION_CODES .TIRAMISU
573- ? true
574- : PermissionHelper .hasPermission (this , Manifest .permission .WRITE_EXTERNAL_STORAGE );
578+ return PermissionHelper .hasPermission (this , Manifest .permission .WRITE_EXTERNAL_STORAGE );
579+ }
580+
581+ private boolean canHaveWritePermission () {
582+ return Build .VERSION .SDK_INT < Build .VERSION_CODES .TIRAMISU ;
575583 }
576584
577585 private boolean needPermission (String nativeURL , int permissionType ) throws JSONException {
@@ -598,9 +606,9 @@ private boolean needPermission(String nativeURL, int permissionType) throws JSON
598606 allowedStorageDirectories .add (j .getString ("externalMediaDirectory" ));
599607 }
600608
601- if (permissionType == READ && hasReadPermission ()) {
609+ if (permissionType == READ && (! canHaveReadPermission () || hasReadPermission () )) {
602610 return false ;
603- } else if (permissionType == WRITE && hasWritePermission ()) {
611+ } else if (permissionType == WRITE && (! canHaveWritePermission () || hasWritePermission () )) {
604612 return false ;
605613 }
606614
0 commit comments