This is a fork of expo-image-picker
with additional utility as required by swsh. Feel free to use at your own risk: This is considered to be very unstable and untested for most use cases.
Due to the monstrous size of Expo, this is a fork of a subdirectory in it so we don't have to download the entire repository. Guide for forking and updating
<<<<<<< HEAD
To get a branch linked with the original Expo repository, use the following commands:
git remote add upstream https://github.com/expo/expo.git
git fetch upstream
git checkout -b upstream-main upstream/main
For managed Expo projects, please follow the installation instructions in the API documentation for the latest stable release.
For bare React Native projects, you must ensure that you have installed and configured the expo
package before continuing.
npx expo install expo-image-picker
This is only required for usage in bare React Native apps.
This package automatically adds the CAMERA
, READ_EXTERNAL_STORAGE
, and WRITE_EXTERNAL_STORAGE
permissions. They are used when picking images from the camera directly, or from the camera roll.
<!-- Added permissions -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
This is only required for usage in bare React Native apps.
Add NSPhotoLibraryUsageDescription
, NSCameraUsageDescription
, and NSMicrophoneUsageDescription
keys to your Info.plist
:
<key>NSPhotoLibraryUsageDescription</key>
<string>Give $(PRODUCT_NAME) permission to save photos</string>
<key>NSCameraUsageDescription</key>
<string>Give $(PRODUCT_NAME) permission to access your camera</string>
<key>NSMicrophoneUsageDescription</key>
<string>Give $(PRODUCT_NAME) permission to use your microphone</string>
Run npx pod-install
after installing the npm package.
This plugin is applied automatically in EAS Build, only add the config plugin if you want to pass in extra properties.
After installing this npm package, add the config plugin to the plugins
array of your app.json
or app.config.js
:
{
"expo": {
"plugins": ["expo-image-picker"]
}
}
Next, rebuild your app as described in the "Adding custom native code" guide.
The plugin provides props for extra customization. Every time you change the props or plugins, you'll need to rebuild (and prebuild
) the native app. If no extra properties are added, defaults will be used.
photosPermission
(string | false): Sets the iOSNSPhotoLibraryUsageDescription
permission message to theInfo.plist
. Settingfalse
will skip adding the permission on iOS and does not skip the permission on Android. Defaults toAllow $(PRODUCT_NAME) to access your photos
.cameraPermission
(string | false): Sets the iOSNSCameraUsageDescription
permission message to theInfo.plist
. Settingfalse
will skip adding the permission on iOS and does not skip the permission on Android. Defaults toAllow $(PRODUCT_NAME) to access your camera
.microphonePermission
(string | false): Sets the iOSNSCameraUsageDescription
permission message to theInfo.plist
. Settingfalse
will skip adding the permission on iOS and skips adding theandroid.permission.RECORD_AUDIO
Android permission. Defaults toAllow $(PRODUCT_NAME) to access your photos
.
{
"expo": {
"plugins": [
[
"expo-image-picker",
{
"photosPermission": "custom photos permission",
"cameraPermission": "Allow $(PRODUCT_NAME) to open the camera",
"//": "Disables the microphone permission",
"microphonePermission": false
}
]
]
}
}
Contributions are very welcome! Please refer to guidelines described in the contributing guide.
upstream-expo-image-picker