OpenNoteScanner
OpenNoteScanner copied to clipboard
App Crashed when "Storage" permission is revoked.
When the "Storage" permission is revoked ("Camera" permission is granted) the app crashes. (see the gif below).
(Android 5, Nexus 5, API 23)

IMHO, the APIs for checking(checkSelfPermission) Storage permission should get called just before saving the picture.
The stack trace:
02-13 10:55:11.210 3301 3323 E AndroidRuntime: FATAL EXCEPTION: Worker Thread
02-13 10:55:11.210 3301 3323 E AndroidRuntime: Process: com.todobom.opennotescanner, PID: 3301
02-13 10:55:11.210 3301 3323 E AndroidRuntime: java.lang.SecurityException: Permission Denial: writing com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=3301, uid=10058 requires android.permission.WRITE_EXTERNAL_STORAGE, or grantUriPermission()
02-13 10:55:11.210 3301 3323 E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:1599)
02-13 10:55:11.210 3301 3323 E AndroidRuntime: at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
02-13 10:55:11.210 3301 3323 E AndroidRuntime: at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
02-13 10:55:11.210 3301 3323 E AndroidRuntime: at android.content.ContentProviderProxy.insert(ContentProviderNative.java:476)
02-13 10:55:11.210 3301 3323 E AndroidRuntime: at android.content.ContentResolver.insert(ContentResolver.java:1231)
02-13 10:55:11.210 3301 3323 E AndroidRuntime: at com.todobom.opennotescanner.helpers.Utils.addImageToGallery(Utils.java:215)
02-13 10:55:11.210 3301 3323 E AndroidRuntime: at com.todobom.opennotescanner.OpenNoteScannerActivity.saveDocument(OpenNoteScannerActivity.java:972)
02-13 10:55:11.210 3301 3323 E AndroidRuntime: at com.todobom.opennotescanner.ImageProcessor.processPicture(ImageProcessor.java:162)
02-13 10:55:11.210 3301 3323 E AndroidRuntime: at com.todobom.opennotescanner.ImageProcessor.handleMessage(ImageProcessor.java:91)
02-13 10:55:11.210 3301 3323 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
02-13 10:55:11.210 3301 3323 E AndroidRuntime: at android.os.Looper.loop(Looper.java:148)
02-13 10:55:11.210 3301 3323 E AndroidRuntime: at android.os.HandlerThread.run(HandlerThread.java:61)