expo-media-library provides access to the user's media library, allowing them to access their existing images and videos from your app, as well as save new ones. You can also subscribe to any updates made to the user's media library.
Saves the file at given localUri to the user's media library. Unlike createAssetAsync(), this method doesn't return created asset.
On iOS 11+, it's possible to use this method without asking for CAMERA_ROLL permission, however then yours Info.plist should have NSPhotoLibraryAddUsageDescription key.
localUri (string) -- A URI to the image or video file. It must contain an extension. On Android it must be a local path, so it must start with file:///.
Fetches a page of assets matching the provided criteria.
first (number) -- The maximum number of items on a single page. Defaults to 20.
after (string) -- Asset ID of the last item returned on the previous page.
album (string | Album) -- Album or its ID to get assets from specific album.
sortBy (array) -- An array of SortBy keys. By default, all keys are sorted in descending order, however you can also pass a pair [key, ascending] where the second item is a boolean value that means whether to use ascending order. Note that if the SortBy.default key is used, then ascending argument will not matter.
Earlier items have higher priority when sorting out the results.
If empty, this method will use the default sorting that is provided by the platform.
mediaType (array) -- An array of MediaType types. By default MediaType.photo is set.
createdAfter (Date | number) -- Date object or Unix timestamp in milliseconds limiting returned assets only to those that were created after this date.
createdBefore (Date | number) -- Similarly as createdAfter, but limits assets only to those that were created before specified date.
A promise that resolves to an object that contains following keys:
assets (array) -- A page of assets fetched by the query.
endCursor (string) -- ID of the last fetched asset. It should be passed as after option in order to get the next page.
hasNextPage (boolean) -- Whether there are more assets to fetch.
totalCount (number) -- Estimated total number of assets that match the query.
Provides more informations about an asset, including GPS location, local URI and EXIF metadata.
Asset object extended by additional fields listed in the table.
Deletes assets from the library.
On iOS it deletes assets from all albums they belong to, while on Android it keeps all copies of them (album is strictly connected to the asset).
Also, there is additional dialog on iOS that requires user to confirm this action.
assets (array) -- An array of assets or their IDs.
Returns true if the assets were successfully deleted.
Creates an album with given name and initial asset.
The asset parameter is required on Android, since it's not possible to create empty album on this platform.
On Android, by default it copies given asset from the current album to the new one, however it's also possible to move it by passing false as copyAsset argument.
In case it's copied you should keep in mind that getAssetsAsync will return duplicated asset.
albumName (string) -- Name of the album to create.
asset (string | Asset) -- Asset or its ID. Required on Android.
copyAsset (boolean) -- Whether to copy asset to the new album instead of move it. Defaults to true. (Android only)
On Android by default it deletes assets belonging to given albums from the library. On iOS it doesn't delete these assets, however it's possible to do by passing true as deleteAssets.
albums (array) -- Array of albums or their IDs, that will be removed from the library.
deleteAssets (boolean) -- Whether to also delete assets belonging to given albums. Defaults to false. (iOS only)
Returns a promise resolving to true if the albums were successfully deleted from the library.
MediaLibrary.addAssetsToAlbumAsync(assets, album, copyAssets)
Adds array of assets to the album.
On Android, by default it copies assets from the current album to provided one, however it's also possible to move them by passing false as copyAssets argument.
In case they're copied you should keep in mind that getAssetsAsync will return duplicated assets.
listener (function) -- A callback that is called when any assets have been inserted or deleted from the library. On Android it's invoked with an empty object. On iOS it's invoked with an object that contains following keys:
insertedAssets (array) -- Array of assets that have been inserted to the library.
deletedAssets (array) -- Array of assets that have been deleted from the library.
An EventSubscription object that you can call remove() on when you would like to unsubscribe the listener.