Skip to content

Commit e539743

Browse files
authored
Merge pull request #133 from wordpress-mobile/fix/camera-permission-video
[Permissions] Clean-up Camera and Media permissions for Android 13 and up
2 parents 2170c39 + a07e843 commit e539743

File tree

2 files changed

+10
-26
lines changed

2 files changed

+10
-26
lines changed

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

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import android.content.ContentUris;
44
import android.content.Context;
5-
import android.content.CursorLoader;
65
import android.database.Cursor;
76
import android.graphics.BitmapFactory;
87
import android.net.Uri;
@@ -106,19 +105,6 @@ public static boolean isLocalFile(String state) {
106105
|| state.equalsIgnoreCase("failed");
107106
}
108107

109-
public static Uri getLastRecordedVideoUri(Context appContext) {
110-
String[] proj = {MediaStore.Video.Media._ID};
111-
Uri contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
112-
String sortOrder = MediaStore.Video.VideoColumns.DATE_TAKEN + " DESC";
113-
CursorLoader loader = new CursorLoader(appContext, contentUri, proj, null, null, sortOrder);
114-
Cursor cursor = loader.loadInBackground();
115-
cursor.moveToFirst();
116-
long value = cursor.getLong(0);
117-
SqlUtils.closeCursor(cursor);
118-
119-
return Uri.parse(contentUri.toString() + "/" + value);
120-
}
121-
122108
/**
123109
* Get image max size setting from the image max size setting string. This string can be an int, in this case it's
124110
* the maximum image width defined by the site.

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

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -103,29 +103,27 @@ public static boolean checkAndRequestCameraAndStoragePermissions(Activity activi
103103
return checkAndRequestPermissions(activity, requestCode, getCameraAndStoragePermissions());
104104
}
105105

106-
public static boolean checkAndRequestStoragePermission(Activity activity, int requestCode) {
107-
return checkAndRequestPermissions(activity, requestCode, getStoragePermissions());
108-
}
109-
110-
public static boolean checkAndRequestStoragePermission(Fragment fragment, int requestCode) {
111-
return checkAndRequestPermissions(fragment, requestCode, getStoragePermissions());
106+
public static boolean checkAndRequestFileDownloadPermission(Fragment fragment, int requestCode) {
107+
return checkAndRequestPermissions(fragment, requestCode, getFileDownloadPermission());
112108
}
113109

114110
public static String[] getCameraAndStoragePermissions() {
115111
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
116-
return new String[]{permission.CAMERA, permission.READ_MEDIA_IMAGES, permission.READ_MEDIA_VIDEO};
112+
return new String[]{permission.CAMERA};
117113
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
118114
return new String[]{permission.CAMERA, permission.READ_EXTERNAL_STORAGE};
119115
} else {
120116
return new String[]{permission.CAMERA, permission.WRITE_EXTERNAL_STORAGE, permission.READ_EXTERNAL_STORAGE};
121117
}
122118
}
123119

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};
120+
/**
121+
* Starting from Android Q (SDK 29), the WRITE_EXTERNAL_STORAGE permission is not needed anymore for downloading
122+
* files when using DownloadManager.Request#setDestinationInExternalPublicDir.
123+
*/
124+
private static String[] getFileDownloadPermission() {
125+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
126+
return new String[]{};
129127
} else {
130128
return new String[]{permission.READ_EXTERNAL_STORAGE, permission.WRITE_EXTERNAL_STORAGE};
131129
}

0 commit comments

Comments
 (0)