Skip to content

Commit 0bfa5ba

Browse files
authored
Merge pull request #9 from ath0mas/can-have-permission
Android: restore getWritePermission, but check can have permission
2 parents eff8c05 + f8f2d18 commit 0bfa5ba

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

src/android/FileUtils.java

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)