diff --git a/packages/image_picker/image_picker_android/CHANGELOG.md b/packages/image_picker/image_picker_android/CHANGELOG.md index 77b8879117a..793b6f0f1b6 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.6+2 + +* Fixes null pointer exception in `saveResult`. + ## 0.8.6+1 * Refactors code in preparation for adopting Pigeon. diff --git a/packages/image_picker/image_picker_android/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerCache.java b/packages/image_picker/image_picker_android/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerCache.java index 86e314d44e0..1593f87f8c9 100644 --- a/packages/image_picker/image_picker_android/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerCache.java +++ b/packages/image_picker/image_picker_android/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerCache.java @@ -96,10 +96,9 @@ String retrievePendingCameraMediaUriPath() { void saveResult( @Nullable ArrayList path, @Nullable String errorCode, @Nullable String errorMessage) { - Set imageSet = new HashSet<>(); - imageSet.addAll(path); SharedPreferences.Editor editor = prefs.edit(); if (path != null) { + Set imageSet = new HashSet<>(path); editor.putStringSet(FLUTTER_IMAGE_PICKER_IMAGE_PATH_KEY, imageSet); } if (errorCode != null) { diff --git a/packages/image_picker/image_picker_android/android/src/test/java/io/flutter/plugins/imagepicker/ImagePickerCacheTest.java b/packages/image_picker/image_picker_android/android/src/test/java/io/flutter/plugins/imagepicker/ImagePickerCacheTest.java index 01bdd6768dc..aa6fbc75ee8 100644 --- a/packages/image_picker/image_picker_android/android/src/test/java/io/flutter/plugins/imagepicker/ImagePickerCacheTest.java +++ b/packages/image_picker/image_picker_android/android/src/test/java/io/flutter/plugins/imagepicker/ImagePickerCacheTest.java @@ -7,6 +7,7 @@ import static io.flutter.plugins.imagepicker.ImagePickerCache.SHARED_PREFERENCES_NAME; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.IsEqual.equalTo; +import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -115,4 +116,12 @@ public void imageCache_shouldBeAbleToSetAndGetQuality() { (int) resultMapWithDefaultQuality.get(ImagePickerCache.MAP_KEY_IMAGE_QUALITY); assertThat(defaultImageQuality, equalTo(100)); } + + @Test + public void imageCache_shouldNotThrowIfPathIsNullInSaveResult() { + final ImagePickerCache cache = new ImagePickerCache(mockActivity); + cache.saveResult(null, "errorCode", "errorMessage"); + assertTrue( + "No exception thrown when ImagePickerCache.saveResult() was passed a null path", true); + } } diff --git a/packages/image_picker/image_picker_android/pubspec.yaml b/packages/image_picker/image_picker_android/pubspec.yaml index 812026de317..b03d84bba6e 100755 --- a/packages/image_picker/image_picker_android/pubspec.yaml +++ b/packages/image_picker/image_picker_android/pubspec.yaml @@ -3,7 +3,7 @@ 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.6+1 +version: 0.8.6+2 environment: sdk: ">=2.17.0 <3.0.0"