|
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;
|
@@ -81,58 +79,55 @@ public static boolean checkPermissions(Activity activity, String[] permissionLis
|
81 | 79 | return checkPermissions((Context) activity, permissionList);
|
82 | 80 | }
|
83 | 81 |
|
| 82 | + public static boolean checkCameraAndStoragePermissions(Context context) { |
| 83 | + return checkPermissions(context, getCameraAndStoragePermissions()); |
| 84 | + } |
| 85 | + |
84 | 86 | 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()); |
89 | 88 | }
|
90 | 89 |
|
91 | 90 | 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) { |
93 | 92 | return checkPermissions(activity, new String[]{permission.POST_NOTIFICATIONS});
|
94 | 93 | } else {
|
95 | 94 | return true;
|
96 | 95 | }
|
97 | 96 | }
|
98 | 97 |
|
99 | 98 | 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()); |
107 | 100 | }
|
108 | 101 |
|
109 | 102 | 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()); |
117 | 104 | }
|
118 | 105 |
|
119 | 106 | 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}; |
123 | 119 | } 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}; |
125 | 121 | }
|
126 |
| - return checkAndRequestPermissions(activity, requestCode, permissions); |
127 | 122 | }
|
128 | 123 |
|
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}; |
133 | 129 | } 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}; |
135 | 131 | }
|
136 |
| - return checkAndRequestPermissions(fragment, requestCode, permissions); |
137 | 132 | }
|
138 | 133 | }
|
0 commit comments