Skip to content

Commit

Permalink
Merge pull request #133 from wordpress-mobile/fix/camera-permission-v…
Browse files Browse the repository at this point in the history
…ideo

[Permissions] Clean-up Camera and Media permissions for Android 13 and up
  • Loading branch information
irfano committed Sep 4, 2023
2 parents 2170c39 + a07e843 commit e539743
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,29 +103,27 @@ 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 {
return new String[]{permission.CAMERA, permission.WRITE_EXTERNAL_STORAGE, permission.READ_EXTERNAL_STORAGE};
}
}

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};
}
Expand Down

0 comments on commit e539743

Please sign in to comment.