diff --git a/WordPressUtils/src/main/java/org/wordpress/android/util/MediaUtils.java b/WordPressUtils/src/main/java/org/wordpress/android/util/MediaUtils.java index 2abfbf63f..609c5abe1 100644 --- a/WordPressUtils/src/main/java/org/wordpress/android/util/MediaUtils.java +++ b/WordPressUtils/src/main/java/org/wordpress/android/util/MediaUtils.java @@ -2,7 +2,6 @@ import android.content.ContentUris; import android.content.Context; -import android.content.CursorLoader; import android.database.Cursor; import android.graphics.BitmapFactory; import android.net.Uri; @@ -106,19 +105,6 @@ public static boolean isLocalFile(String state) { || state.equalsIgnoreCase("failed"); } - public static Uri getLastRecordedVideoUri(Context appContext) { - String[] proj = {MediaStore.Video.Media._ID}; - Uri contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; - String sortOrder = MediaStore.Video.VideoColumns.DATE_TAKEN + " DESC"; - CursorLoader loader = new CursorLoader(appContext, contentUri, proj, null, null, sortOrder); - Cursor cursor = loader.loadInBackground(); - cursor.moveToFirst(); - long value = cursor.getLong(0); - SqlUtils.closeCursor(cursor); - - return Uri.parse(contentUri.toString() + "/" + value); - } - /** * Get image max size setting from the image max size setting string. This string can be an int, in this case it's * the maximum image width defined by the site. diff --git a/WordPressUtils/src/main/java/org/wordpress/android/util/PermissionUtils.java b/WordPressUtils/src/main/java/org/wordpress/android/util/PermissionUtils.java index 586e1f8a9..974d2eb76 100644 --- a/WordPressUtils/src/main/java/org/wordpress/android/util/PermissionUtils.java +++ b/WordPressUtils/src/main/java/org/wordpress/android/util/PermissionUtils.java @@ -103,17 +103,13 @@ public static boolean checkAndRequestCameraAndStoragePermissions(Activity activi return checkAndRequestPermissions(activity, requestCode, getCameraAndStoragePermissions()); } - public static boolean checkAndRequestStoragePermission(Activity activity, int requestCode) { - return checkAndRequestPermissions(activity, requestCode, getStoragePermissions()); - } - - public static boolean checkAndRequestStoragePermission(Fragment fragment, int requestCode) { - return checkAndRequestPermissions(fragment, requestCode, getStoragePermissions()); + public static boolean checkAndRequestFileDownloadPermission(Fragment fragment, int requestCode) { + return checkAndRequestPermissions(fragment, requestCode, getFileDownloadPermission()); } public static String[] getCameraAndStoragePermissions() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - return new String[]{permission.CAMERA, permission.READ_MEDIA_IMAGES, permission.READ_MEDIA_VIDEO}; + return new String[]{permission.CAMERA}; } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { return new String[]{permission.CAMERA, permission.READ_EXTERNAL_STORAGE}; } else { @@ -121,11 +117,13 @@ public static String[] getCameraAndStoragePermissions() { } } - private static String[] getStoragePermissions() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - return new String[]{permission.READ_MEDIA_IMAGES, permission.READ_MEDIA_VIDEO}; - } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - return new String[]{permission.READ_EXTERNAL_STORAGE}; + /** + * Starting from Android Q (SDK 29), the WRITE_EXTERNAL_STORAGE permission is not needed anymore for downloading + * files when using DownloadManager.Request#setDestinationInExternalPublicDir. + */ + private static String[] getFileDownloadPermission() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + return new String[]{}; } else { return new String[]{permission.READ_EXTERNAL_STORAGE, permission.WRITE_EXTERNAL_STORAGE}; }