|
1 | 1 | package org.wordpress.android.util;
|
2 | 2 |
|
3 |
| -import android.Manifest; |
4 | 3 | import android.Manifest.permission;
|
5 | 4 | import android.app.Activity;
|
6 | 5 | import android.content.Context;
|
7 | 6 | import android.content.pm.PackageManager;
|
8 | 7 | import android.os.Build;
|
9 |
| -import android.os.Build.VERSION_CODES; |
10 | 8 |
|
11 | 9 | import androidx.core.app.ActivityCompat;
|
12 | 10 | import androidx.core.content.ContextCompat;
|
@@ -63,67 +61,73 @@ private static boolean checkAndRequestPermissions(Fragment fragment, int request
|
63 | 61 | *
|
64 | 62 | * @return true if all permissions are granted
|
65 | 63 | */
|
66 |
| - public static boolean checkPermissions(Activity activity, String[] permissionList) { |
| 64 | + public static boolean checkPermissions(Context context, String[] permissionList) { |
67 | 65 | for (String permission : permissionList) {
|
68 |
| - if (ContextCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) { |
| 66 | + if (ContextCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) { |
69 | 67 | return false;
|
70 | 68 | }
|
71 | 69 | }
|
72 | 70 | return true;
|
73 | 71 | }
|
74 | 72 |
|
| 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 | + |
75 | 86 | 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()); |
80 | 88 | }
|
81 | 89 |
|
82 | 90 | 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) { |
84 | 92 | return checkPermissions(activity, new String[]{permission.POST_NOTIFICATIONS});
|
85 | 93 | } else {
|
86 | 94 | return true;
|
87 | 95 | }
|
88 | 96 | }
|
89 | 97 |
|
90 | 98 | 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()); |
98 | 100 | }
|
99 | 101 |
|
100 | 102 | 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()); |
108 | 104 | }
|
109 | 105 |
|
110 | 106 | 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}; |
114 | 119 | } 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}; |
116 | 121 | }
|
117 |
| - return checkAndRequestPermissions(activity, requestCode, permissions); |
118 | 122 | }
|
119 | 123 |
|
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}; |
124 | 129 | } 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}; |
126 | 131 | }
|
127 |
| - return checkAndRequestPermissions(fragment, requestCode, permissions); |
128 | 132 | }
|
129 | 133 | }
|
0 commit comments