diff --git a/packages/image_picker/CHANGELOG.md b/packages/image_picker/CHANGELOG.md index a26a34bcbe84..f1741507b0f1 100644 --- a/packages/image_picker/CHANGELOG.md +++ b/packages/image_picker/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.0+15 + +* Android: throws an exception when permissions denied instead of ignoring. + ## 0.6.0+14 * Fix typo in README. diff --git a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java index 35c303fd5b99..2f2522f53c5c 100644 --- a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java +++ b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java @@ -408,7 +408,16 @@ public boolean onRequestPermissionsResult( } if (!permissionGranted) { - finishWithSuccess(null); + switch (requestCode) { + case REQUEST_EXTERNAL_IMAGE_STORAGE_PERMISSION: + case REQUEST_EXTERNAL_VIDEO_STORAGE_PERMISSION: + finishWithError("photo_access_denied", "The user did not allow photo access."); + break; + case REQUEST_CAMERA_IMAGE_PERMISSION: + case REQUEST_CAMERA_VIDEO_PERMISSION: + finishWithError("camera_access_denied", "The user did not allow camera access."); + break; + } } return true; diff --git a/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerDelegateTest.java b/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerDelegateTest.java index 3ca2a3765ece..02bb91b7914f 100644 --- a/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerDelegateTest.java +++ b/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerDelegateTest.java @@ -184,7 +184,7 @@ public void takeImageWithCamera_WhenCameraPermissionNotPresent_RequestsForPermis @Test public void - onRequestPermissionsResult_WhenReadExternalStoragePermissionDenied_FinishesWithNull() { + onRequestPermissionsResult_WhenReadExternalStoragePermissionDenied_FinishesWithError() { ImagePickerDelegate delegate = createDelegateWithPendingResultAndMethodCall(); delegate.onRequestPermissionsResult( @@ -192,7 +192,7 @@ public void takeImageWithCamera_WhenCameraPermissionNotPresent_RequestsForPermis new String[] {Manifest.permission.READ_EXTERNAL_STORAGE}, new int[] {PackageManager.PERMISSION_DENIED}); - verify(mockResult).success(null); + verify(mockResult).error("photo_access_denied", "The user did not allow photo access.", null); verifyNoMoreInteractions(mockResult); } @@ -227,7 +227,7 @@ public void takeImageWithCamera_WhenCameraPermissionNotPresent_RequestsForPermis } @Test - public void onRequestPermissionsResult_WhenCameraPermissionDenied_FinishesWithNull() { + public void onRequestPermissionsResult_WhenCameraPermissionDenied_FinishesWithError() { ImagePickerDelegate delegate = createDelegateWithPendingResultAndMethodCall(); delegate.onRequestPermissionsResult( @@ -235,7 +235,7 @@ public void onRequestPermissionsResult_WhenCameraPermissionDenied_FinishesWithNu new String[] {Manifest.permission.CAMERA}, new int[] {PackageManager.PERMISSION_DENIED}); - verify(mockResult).success(null); + verify(mockResult).error("camera_access_denied", "The user did not allow camera access.", null); verifyNoMoreInteractions(mockResult); } diff --git a/packages/image_picker/pubspec.yaml b/packages/image_picker/pubspec.yaml index bd9b19008fe6..58b3db26085e 100755 --- a/packages/image_picker/pubspec.yaml +++ b/packages/image_picker/pubspec.yaml @@ -5,7 +5,8 @@ authors: - Flutter Team - Rhodes Davis Jr. homepage: https://github.com/flutter/plugins/tree/master/packages/image_picker -version: 0.6.0+14 + +version: 0.6.0+15 flutter: plugin: