Skip to content

Commit 20c490b

Browse files
authored
Merge pull request #128 from wordpress-mobile/fix/camera-and-storage-permissions
Fix/camera and storage permissions
2 parents 3c3d298 + 618911e commit 20c490b

File tree

1 file changed

+38
-34
lines changed

1 file changed

+38
-34
lines changed

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

Lines changed: 38 additions & 34 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;
@@ -63,67 +61,73 @@ private static boolean checkAndRequestPermissions(Fragment fragment, int request
6361
*
6462
* @return true if all permissions are granted
6563
*/
66-
public static boolean checkPermissions(Activity activity, String[] permissionList) {
64+
public static boolean checkPermissions(Context context, String[] permissionList) {
6765
for (String permission : permissionList) {
68-
if (ContextCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) {
66+
if (ContextCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
6967
return false;
7068
}
7169
}
7270
return true;
7371
}
7472

73+
/**
74+
* Check for permissions without requesting them
75+
*
76+
* @return true if all permissions are granted
77+
*/
78+
public static boolean checkPermissions(Activity activity, String[] permissionList) {
79+
return checkPermissions((Context) activity, permissionList);
80+
}
81+
82+
public static boolean checkCameraAndStoragePermissions(Context context) {
83+
return checkPermissions(context, getCameraAndStoragePermissions());
84+
}
85+
7586
public static boolean checkCameraAndStoragePermissions(Activity activity) {
76-
return checkPermissions(activity,
77-
new String[]{
78-
permission.WRITE_EXTERNAL_STORAGE,
79-
permission.CAMERA});
87+
return checkPermissions(activity, getCameraAndStoragePermissions());
8088
}
8189

8290
public static boolean checkNotificationsPermission(Activity activity) {
83-
if (Build.VERSION.SDK_INT >= VERSION_CODES.TIRAMISU) {
91+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
8492
return checkPermissions(activity, new String[]{permission.POST_NOTIFICATIONS});
8593
} else {
8694
return true;
8795
}
8896
}
8997

9098
public static boolean checkAndRequestCameraAndStoragePermissions(Fragment fragment, int requestCode) {
91-
String[] permissions;
92-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
93-
permissions = new String[]{Manifest.permission.CAMERA};
94-
} else {
95-
permissions = new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
96-
}
97-
return checkAndRequestPermissions(fragment, requestCode, permissions);
99+
return checkAndRequestPermissions(fragment, requestCode, getCameraAndStoragePermissions());
98100
}
99101

100102
public static boolean checkAndRequestCameraAndStoragePermissions(Activity activity, int requestCode) {
101-
String[] permissions;
102-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
103-
permissions = new String[]{Manifest.permission.CAMERA};
104-
} else {
105-
permissions = new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
106-
}
107-
return checkAndRequestPermissions(activity, requestCode, permissions);
103+
return checkAndRequestPermissions(activity, requestCode, getCameraAndStoragePermissions());
108104
}
109105

110106
public static boolean checkAndRequestStoragePermission(Activity activity, int requestCode) {
111-
String[] permissions;
112-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
113-
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};
114119
} else {
115-
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};
116121
}
117-
return checkAndRequestPermissions(activity, requestCode, permissions);
118122
}
119123

120-
public static boolean checkAndRequestStoragePermission(Fragment fragment, int requestCode) {
121-
String[] permissions;
122-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
123-
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};
124129
} else {
125-
permissions = new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
130+
return new String[]{permission.READ_EXTERNAL_STORAGE, permission.WRITE_EXTERNAL_STORAGE};
126131
}
127-
return checkAndRequestPermissions(fragment, requestCode, permissions);
128132
}
129133
}

0 commit comments

Comments
 (0)