diff --git a/app/src/main/java/fr/free/nrw/commons/filepicker/FilePicker.java b/app/src/main/java/fr/free/nrw/commons/filepicker/FilePicker.java index 5d168d6b1..698e2d51f 100644 --- a/app/src/main/java/fr/free/nrw/commons/filepicker/FilePicker.java +++ b/app/src/main/java/fr/free/nrw/commons/filepicker/FilePicker.java @@ -166,7 +166,7 @@ public class FilePicker implements Constants { public static List handleExternalImagesPicked(Intent data, Activity activity) { try { return getFilesFromGalleryPictures(data, activity); - } catch (IOException e) { + } catch (IOException | SecurityException e) { e.printStackTrace(); } return new ArrayList<>(); @@ -207,7 +207,7 @@ public class FilePicker implements Constants { } } - private static List getFilesFromGalleryPictures(Intent data, Activity activity) throws IOException { + private static List getFilesFromGalleryPictures(Intent data, Activity activity) throws IOException, SecurityException { List files = new ArrayList<>(); ClipData clipData = data.getClipData(); if (clipData == null) { diff --git a/app/src/main/java/fr/free/nrw/commons/filepicker/PickedFiles.java b/app/src/main/java/fr/free/nrw/commons/filepicker/PickedFiles.java index 86da1326b..01e68c940 100644 --- a/app/src/main/java/fr/free/nrw/commons/filepicker/PickedFiles.java +++ b/app/src/main/java/fr/free/nrw/commons/filepicker/PickedFiles.java @@ -104,12 +104,15 @@ class PickedFiles implements Constants { }); } - static UploadableFile pickedExistingPicture(@NonNull Context context, Uri photoUri) throws IOException { + static UploadableFile pickedExistingPicture(@NonNull Context context, Uri photoUri) throws IOException, SecurityException {// SecurityException for those file providers who share URI but forget to grant necessary permissions InputStream pictureInputStream = context.getContentResolver().openInputStream(photoUri); File directory = tempImageDirectory(context); File photoFile = new File(directory, UUID.randomUUID().toString() + "." + getMimeType(context, photoUri)); - photoFile.createNewFile(); - writeToFile(pictureInputStream, photoFile); + if (photoFile.createNewFile()) { + writeToFile(pictureInputStream, photoFile); + } else { + throw new IOException("could not create photoFile to write upon"); + } return new UploadableFile(photoUri, photoFile); }