From 900b181b2e7cdaef2094e5187cadc77976b7d721 Mon Sep 17 00:00:00 2001 From: Mairramer Date: Mon, 13 May 2024 14:32:08 -0300 Subject: [PATCH 1/2] fix handleChooseMultiImageResult crash --- .../imagepicker/ImagePickerDelegate.java | 5 +++- .../imagepicker/ImagePickerDelegateTest.java | 28 +++++++++++++++++++ .../image_picker_android/pubspec.yaml | 2 +- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/packages/image_picker/image_picker_android/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java b/packages/image_picker/image_picker_android/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java index 880c51c5cf7..b553faa72ca 100644 --- a/packages/image_picker/image_picker_android/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java +++ b/packages/image_picker/image_picker_android/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java @@ -716,7 +716,10 @@ private void handleChooseMultiImageResult(int resultCode, Intent intent) { null)); } } else { - paths.add(new MediaPath(fileUtils.getPathFromUri(activity, intent.getData()), null)); + Uri uri = intent.getData(); + if (uri != null) { + paths.add(new MediaPath(fileUtils.getPathFromUri(activity, uri), null)); + } } handleMediaResult(paths); return; diff --git a/packages/image_picker/image_picker_android/android/src/test/java/io/flutter/plugins/imagepicker/ImagePickerDelegateTest.java b/packages/image_picker/image_picker_android/android/src/test/java/io/flutter/plugins/imagepicker/ImagePickerDelegateTest.java index fdee1c9b67e..5745a3cfd18 100644 --- a/packages/image_picker/image_picker_android/android/src/test/java/io/flutter/plugins/imagepicker/ImagePickerDelegateTest.java +++ b/packages/image_picker/image_picker_android/android/src/test/java/io/flutter/plugins/imagepicker/ImagePickerDelegateTest.java @@ -841,6 +841,34 @@ public void onActivityResult_withUnknownRequest_returnsFalse() { verifyNoMoreInteractions(mockResult); } + @Test + public void onActivityResult_whenImagePickedFromGallery_finishesWithEmptyListIfClipDataIsNull() { + setupMockClipDataNullUri(); + when(mockIntent.getData()).thenReturn(null); + when(mockIntent.getClipData()).thenReturn(null); + + Mockito.doAnswer( + invocation -> { + ((Runnable) invocation.getArgument(0)).run(); + return null; + }) + .when(mockExecutor) + .execute(any(Runnable.class)); + ImagePickerDelegate delegate = + createDelegateWithPendingResultAndOptions(DEFAULT_IMAGE_OPTIONS, null); + + delegate.onActivityResult( + ImagePickerDelegate.REQUEST_CODE_CHOOSE_MULTI_IMAGE_FROM_GALLERY, + Activity.RESULT_OK, + mockIntent); + + @SuppressWarnings("unchecked") + ArgumentCaptor> pathListCapture = ArgumentCaptor.forClass(List.class); + verify(mockResult).success(pathListCapture.capture()); + assertEquals(0, pathListCapture.getValue().size()); + verifyNoMoreInteractions(mockResult); + } + private ImagePickerDelegate createDelegate() { return new ImagePickerDelegate( mockActivity, diff --git a/packages/image_picker/image_picker_android/pubspec.yaml b/packages/image_picker/image_picker_android/pubspec.yaml index ec276759069..3e15b4366c2 100755 --- a/packages/image_picker/image_picker_android/pubspec.yaml +++ b/packages/image_picker/image_picker_android/pubspec.yaml @@ -2,7 +2,7 @@ name: image_picker_android description: Android implementation of the image_picker plugin. repository: https://github.com/flutter/packages/tree/main/packages/image_picker/image_picker_android issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+image_picker%22 -version: 0.8.12 +version: 0.8.12+1 environment: sdk: ^3.3.0 From 4622c54123c43110bd6d138086d0b96ad6239a97 Mon Sep 17 00:00:00 2001 From: Mairramer Date: Mon, 13 May 2024 14:32:19 -0300 Subject: [PATCH 2/2] added changlog --- packages/image_picker/image_picker_android/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/image_picker/image_picker_android/CHANGELOG.md b/packages/image_picker/image_picker_android/CHANGELOG.md index 6a75d640524..99b582a1915 100644 --- a/packages/image_picker/image_picker_android/CHANGELOG.md +++ b/packages/image_picker/image_picker_android/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.12+1 + +* Fixes crashes caused by `handleChooseMultiImageResult` when selecting images with size 0. + ## 0.8.12 * Fixes app crashes on Android 12+ caused by selecting images with size 0.