[android][image-picker] Support filename and filesize on android (#24524)
[image-picker][android] Fix non-serializable type (#23768)
[android][image-picker] Restore backported photo picker (#23617)
[android][image-picker] Fix backported photo picker crashing with null intent (#23224)
[android][image-picker] Use a more modern and streamlined system image picker (#22658)
[android][image-picker] use correct MIME types in ImageLibraryContract when mediaTypes is ALL (#22606)# Why <!-- Please describe the motivation for this PR, and link to relevant GitHub issues,
[android][image-picker] use correct MIME types in ImageLibraryContract when mediaTypes is ALL (#22606)# Why <!-- Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests. --> Fixes https://github.com/expo/expo/issues/22602 The problem with the current contract implementation is that if you passed "ALL" as the accepted media types, it would allow `*/*`, which means anything would work, including e.g. `.pdf`s. I think we can safely assume that we should only accept `image/*` and `video/*` in that case. # How <!-- How did you build this feature or fix this bug and why? --> This PR makes use of `Intent.EXTRA_MIME_TYPES` to achieve this functionality. # Test Plan <!-- Please describe how you tested this change and how a reviewer could reproduce your test, especially if this PR does not include automated tests! If possible, please also provide terminal output and/or screenshots demonstrating your test/reproduction. --> Verified that I can no longer select `.pdf`s when MediaTypes is ALL  Also ensured that the tests pass (not sure why the `launchCameraAsync` one failed - I assume it has something to do with the fact that I was testing in an emulator).  # Checklist <!-- Please check the appropriate items below if they apply to your diff. This is required for changes to Expo modules. --> - [ ] Documentation is up to date to reflect these changes (eg: https://docs.expo.dev and README.md). - [ ] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md) - [X] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin).
show more ...
[image-picker][Android] Fix image picker returning inverted dimensions for vertical images (#22383)# Why https://github.com/expo/expo/issues/22097 # How If the EXIF data was suggesting tha
[image-picker][Android] Fix image picker returning inverted dimensions for vertical images (#22383)# Why https://github.com/expo/expo/issues/22097 # How If the EXIF data was suggesting that the image is rotated the returned image would be in correct orientation, but our dimensions would not change if there was a 90 or 270 degree rotation. Added a check that switches the width and height if such situation occurs. # Test Plan Tested on a physical Android device (SDK 33). --------- Co-authored-by: Expo Bot <[email protected]>
[android][image-picker] Support for cameraType (#22143)# Why - Support for `cameraType` option was missing for android, and only implemented in iOS. - Documentation and types for `cameraType` wer
[android][image-picker] Support for cameraType (#22143)# Why - Support for `cameraType` option was missing for android, and only implemented in iOS. - Documentation and types for `cameraType` were missing # How - Implemented into Android by adding `Intent` extras that tell the camera app which camera to use by default - This of course is dependent on support from the camera app. I send out all known (that I could find) extras that a camera app might support and hope for the best. - Added types and docs for `CameraType` similarly to how expo-camera currently implements it for consistency. (Maybe should be a shared type?) # Test Plan - Ran the `bare-expo` app on Android - Imported `expo-image-picker` and launched the camera with different values for `cameraType` - Logged the intent extras to ensure intent extras properly sent. - It should be noted that this had no effect on my device (Samsung S22 Ultra), most likely my camera app does not support this. # Checklist - [x] Documentation is up to date to reflect these changes (eg: https://docs.expo.dev and README.md). - [x] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md) - [x] This diff will work correctly for `expo prebuild` & EAS Build (eg: updated a module plugin).
[expo-image-picker] fix launchCameraAsync null pointer (#22123)# Why Fixes NullPointerException displayed in issue #22122 # How Replaces the varargs `*listOfNotNull().toTypedArray()` of t
[expo-image-picker] fix launchCameraAsync null pointer (#22123)# Why Fixes NullPointerException displayed in issue #22122 # How Replaces the varargs `*listOfNotNull().toTypedArray()` of the same values to remove the null value if it is there. # Test Plan I tested it by applying the changes to a local build of the reproduction repository provided in #22122. I then confirmed it through patch-package for my personal app and a dev build using EAS Build. # Checklist - [X] Documentation is up to date to reflect these changes (eg: https://docs.expo.dev and README.md). - [X] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md) - [X] This diff will work correctly for `expo prebuild` & EAS Build (eg: updated a module plugin).
[android][image-picker] fix permissions (#21589)# Why Fixes an issue with `image-picker` where passing `writeOnly` would end up in an empty array of permissions causing an exception. # How Alw
[android][image-picker] fix permissions (#21589)# Why Fixes an issue with `image-picker` where passing `writeOnly` would end up in an empty array of permissions causing an exception. # How Always fill the array with the necessary permissions # Test Plan All checks pass in bare expo
[image-picker][android] Support for granular permissions on Android 13 (#20908)Co-authored-by: Łukasz Kosmaty <[email protected]> # Why Add support for [granular permissions](https://deve
[image-picker][android] Support for granular permissions on Android 13 (#20908)Co-authored-by: Łukasz Kosmaty <[email protected]> # Why Add support for [granular permissions](https://developer.android.com/about/versions/13/behavior-changes-13) on Android that were preventing the camera from launching on devices running Android 13 # How Added support for requesting these permissions # Test Plan Tested on a physical device running android 13.
[image-picker] Rework the image picker results (#19570)
[android] Fix scopedContext unavailable in Sweet API modules (#19205)Co-authored-by: Expo Bot <[email protected]>
[modules][Android] Fix records & enums in the release builds (#19551)# Why Closes https://github.com/expo/expo/issues/19509. # How - Added missing proguard rules for records. - Enums cla
[modules][Android] Fix records & enums in the release builds (#19551)# Why Closes https://github.com/expo/expo/issues/19509. # How - Added missing proguard rules for records. - Enums classes from now have to inherit from `EnumArgument` class. > See https://github.com/expo/expo/issues/19509#issuecomment-1278014932 for more information # Test Plan - bare-expo in release build ✅
[modules][Android] Improve registration of activity contracts (#19180)# Why Improves registration of activity contracts by adding a `RegisterActivityContracts` component. That component ensures
[modules][Android] Improve registration of activity contracts (#19180)# Why Improves registration of activity contracts by adding a `RegisterActivityContracts` component. That component ensures that provided block is dispatched on the correct thread. # How - Added `RegisterActivityContracts` component. - Registered contracts on the main thread. - Deprecated previous registration method. # Test Plan - bare-expo and NCL ✅
[image-picker][Android] Restore `allowsEditing` option (#17963)
[image-picker][android] Get asset IDs (#18236)Please see the PR description for details.
[image-picker] Fix missing `Promise` converter error (#18211)# Why Fixes missing `Promise` converter error in the `image-picker` module. # How Suspend functions can't receive promises.
[image-picker][Android] Add support for selecting multiple media files (#18161)
[emc][image-picker][Android] Migrate to custom `AppContextActivityResultContract` (#17987)
[image-picker][Android] Migrate to `registerForActivityResult` (#17671)
[image-picker][Android] Rewrite module to Sweet API (#17668)
[image-picker][android] Fix failure when allowsEditing is true and non-jpeg file picked (#16615)# Why Failure when non-jpeg files are selected with `allowsEditing`. Closes #16514 Closes #151
[image-picker][android] Fix failure when allowsEditing is true and non-jpeg file picked (#16615)# Why Failure when non-jpeg files are selected with `allowsEditing`. Closes #16514 Closes #15155 - already closed, perfectly clear, simple to reproduce bug report left to go stale Not part of this PR but also suggest migrating from `androidx.legacy:legacy-support-v4` to `androidx.exifinterface:exifinterface` since it adds support for Exif on more than just JPEG images (PNG and WebP). This PR is still relevant because formats not supported or not possible to support would still reject instead of just failing to write Exif. Any chance this can get backported to SDK 43? # How - Skip copying Exif if it's not requested using `withExifData` same as `getFile` does for a non-edited files - Catch, log and ignore the exception on failure to write Exif at `newExif.saveAttributes()` # Test Plan Snacks in #15155. Select a PNG image. ```ts let result = await ImagePicker.launchImageLibraryAsync({ quality: 1, allowsEditing: true, }); console.log(result); ```
[image-picker][Android][plugin] Migrate to `com.github.CanHub:Android-Image-Cropper` (#16122)
[modules-core] Extract common Kotlin utilities (#14783)
123