Skip to content

Commit 618911e

Browse files
committed
Add getCameraAndStoragePermissions, getStoragePermissions functions
The logic for getting the necessary permissions has also been updated to resolve the permission issue.
1 parent 91f4c3f commit 618911e

File tree

1 file changed

+27
-32
lines changed

1 file changed

+27
-32
lines changed

WordPressUtils/src/main/java/org/wordpress/android/util/PermissionUtils.java

Lines changed: 27 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
package org.wordpress.android.util;
22

3-
import android.Manifest;
43
import android.Manifest.permission;
54
import android.app.Activity;
65
import android.content.Context;
76
import android.content.pm.PackageManager;
87
import android.os.Build;
9-
import android.os.Build.VERSION_CODES;
108

119
import androidx.core.app.ActivityCompat;
1210
import androidx.core.content.ContextCompat;
@@ -81,58 +79,55 @@ public static boolean checkPermissions(Activity activity, String[] permissionLis
8179
return checkPermissions((Context) activity, permissionList);
8280
}
8381

82+
public static boolean checkCameraAndStoragePermissions(Context context) {
83+
return checkPermissions(context, getCameraAndStoragePermissions());
84+
}
85+
8486
public static boolean checkCameraAndStoragePermissions(Activity activity) {
85-
return checkPermissions(activity,
86-
new String[]{
87-
permission.WRITE_EXTERNAL_STORAGE,
88-
permission.CAMERA});
87+
return checkPermissions(activity, getCameraAndStoragePermissions());
8988
}
9089

9190
public static boolean checkNotificationsPermission(Activity activity) {
92-
if (Build.VERSION.SDK_INT >= VERSION_CODES.TIRAMISU) {
91+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
9392
return checkPermissions(activity, new String[]{permission.POST_NOTIFICATIONS});
9493
} else {
9594
return true;
9695
}
9796
}
9897

9998
public static boolean checkAndRequestCameraAndStoragePermissions(Fragment fragment, int requestCode) {
100-
String[] permissions;
101-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
102-
permissions = new String[]{Manifest.permission.CAMERA};
103-
} else {
104-
permissions = new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
105-
}
106-
return checkAndRequestPermissions(fragment, requestCode, permissions);
99+
return checkAndRequestPermissions(fragment, requestCode, getCameraAndStoragePermissions());
107100
}
108101

109102
public static boolean checkAndRequestCameraAndStoragePermissions(Activity activity, int requestCode) {
110-
String[] permissions;
111-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
112-
permissions = new String[]{Manifest.permission.CAMERA};
113-
} else {
114-
permissions = new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
115-
}
116-
return checkAndRequestPermissions(activity, requestCode, permissions);
103+
return checkAndRequestPermissions(activity, requestCode, getCameraAndStoragePermissions());
117104
}
118105

119106
public static boolean checkAndRequestStoragePermission(Activity activity, int requestCode) {
120-
String[] permissions;
121-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
122-
permissions = new String[]{Manifest.permission.CAMERA};
107+
return checkAndRequestPermissions(activity, requestCode, getStoragePermissions());
108+
}
109+
110+
public static boolean checkAndRequestStoragePermission(Fragment fragment, int requestCode) {
111+
return checkAndRequestPermissions(fragment, requestCode, getStoragePermissions());
112+
}
113+
114+
public static String[] getCameraAndStoragePermissions() {
115+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
116+
return new String[]{permission.CAMERA, permission.READ_MEDIA_IMAGES, permission.READ_MEDIA_VIDEO};
117+
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
118+
return new String[]{permission.CAMERA, permission.READ_EXTERNAL_STORAGE};
123119
} else {
124-
permissions = new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
120+
return new String[]{permission.CAMERA, permission.WRITE_EXTERNAL_STORAGE, permission.READ_EXTERNAL_STORAGE};
125121
}
126-
return checkAndRequestPermissions(activity, requestCode, permissions);
127122
}
128123

129-
public static boolean checkAndRequestStoragePermission(Fragment fragment, int requestCode) {
130-
String[] permissions;
131-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
132-
permissions = new String[]{Manifest.permission.CAMERA};
124+
private static String[] getStoragePermissions() {
125+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
126+
return new String[]{permission.READ_MEDIA_IMAGES, permission.READ_MEDIA_VIDEO};
127+
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
128+
return new String[]{permission.READ_EXTERNAL_STORAGE};
133129
} else {
134-
permissions = new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
130+
return new String[]{permission.READ_EXTERNAL_STORAGE, permission.WRITE_EXTERNAL_STORAGE};
135131
}
136-
return checkAndRequestPermissions(fragment, requestCode, permissions);
137132
}
138133
}

0 commit comments

Comments
 (0)