Google is committed to advancing racial equity for Black communities. See how.
Added in API level 1

MediaStore

class MediaStore
kotlin.Any
   ↳ android.provider.MediaStore

The contract between the media provider and applications. Contains definitions for the supported URIs and columns.

The media provider provides an indexed collection of common media types, such as Audio, Video, and Images, from any attached storage devices. Each collection is organized based on the primary MIME type of the underlying content; for example, image/* content is indexed under Images. The Files collection provides a broad view across all collections, and does not filter by MIME type.

Summary

Nested classes

Collection of all media with MIME type of audio/*.

abstract

Download metadata columns.

Collection of downloaded items.

Media provider table containing an index of all files in the media storage, including non-media files.

Collection of all media with MIME type of image/*.

abstract

Common media metadata columns.

Collection of all media with MIME type of video/*.

Constants

static String

Standard Intent action that can be sent to have the camera application capture an image and return it.

static String

Intent action that can be sent to have the camera application capture an image and return it when the device is secured (e.g. with a pin, password, pattern, or face unlock).

static String

Standard action that can be sent to review the given media file.

static String

Standard action that can be sent to review the given media file when the device is secured (e.g. with a pin, password, pattern, or face unlock).

static String

Standard Intent action that can be sent to have the camera application capture a video and return it.

static String

The authority for the media provider

static String

When defined, the launched application is requested to set the given brightness value via android.view.WindowManager.LayoutParams#screenBrightness to help ensure a smooth transition when launching ACTION_REVIEW or ACTION_REVIEW_SECURE intents.

static String

Specify the maximum allowed recording duration in seconds.

static String

The name of the Intent-extra used to control the onCompletion behavior of a MovieView.

static String

The name of an Intent-extra used to control the UI of a ViewImage.

static String

The name of the Intent-extra used to define the album

static String

The name of the Intent-extra used to define the artist

static String

The name of the Intent-extra used to define the search focus.

static String

The name of the Intent-extra used to define the genre.

static String

The name of the Intent-extra used to define the playlist.

static String

The name of the Intent-extra used to define the radio channel.

static String

The name of the Intent-extra used to define the song title

static String

The name of the Intent-extra used to indicate a content resolver Uri to be used to store the requested image or video.

static String

The name of the Intent-extra used to control the orientation of a ViewImage or a MovieView.

static String

The name of an Intent-extra used to control the UI of a ViewImage.

static String

Specify the maximum allowed size.

static String

The name of the Intent-extra used to control the quality of a recorded video.

static String

An intent to perform a search for music media and automatically play content from the result when possible.

static String

Activity Action: Perform a search for media.

static String

Activity Action: Launch a music player.

static String

The name of the Intent action used to launch a camera in still image mode.

static String

The name of the Intent action used to launch a camera in still image mode for use when the device is secured (e.g. with a pin, password, pattern, or face unlock).

static String

An intent to perform a search for readable media and automatically play content from the result when possible.

static String

The name of the Intent action used to launch a camera in video mode.

static String

An intent to perform a search for video media and automatically play content from the result when possible.

static Int

Value indicating that the default matching behavior should be used, as defined by the key documentation.

static Int

Value indicating that operations should exclude items matching the criteria defined by this key.

static Int

Value indicating that operations should include items matching the criteria defined by this key.

static Int

Value indicating that operations should only operate on items explicitly matching the criteria defined by this key.

static String

Name of the file signaling the media scanner to ignore media in the containing directory and its subdirectories.

static String

Name of current volume being scanned by the media scanner.

static String

Name under which an activity handling ACTION_REVIEW or ACTION_REVIEW_SECURE publishes the service name for its prewarm service.

static String

Name under which an activity handling INTENT_ACTION_STILL_IMAGE_CAMERA or INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE publishes the service name for its prewarm service.

static String

Specify how MediaColumns#IS_FAVORITE items should be filtered when performing a MediaStore operation.

static String

Specify how MediaColumns#IS_PENDING items should be filtered when performing a MediaStore operation.

static String

Specify how MediaColumns#IS_TRASHED items should be filtered when performing a MediaStore operation.

static String

Specify a Uri that is "related" to the current operation being performed.

static String

The string that is used when a media attribute is not known.

static String

Synthetic volume name that provides a view of all content across the "external" storage of the device.

static String

Specific volume name that represents the primary external storage device at Environment#getExternalStorageDirectory().

static String

Synthetic volume name that provides a view of all content across the "internal" storage of the device.

Public constructors

Public methods

static PendingIntent

Create a PendingIntent that will prompt the user to permanently delete the requested media items.

static PendingIntent

Create a PendingIntent that will prompt the user to favorite the requested media items.

static PendingIntent

Create a PendingIntent that will prompt the user to trash the requested media items.

static PendingIntent

Create a PendingIntent that will prompt the user to grant your app write access for the requested media items.

static Uri?
getDocumentUri(context: Context, mediaUri: Uri)

Return a DocumentsProvider Uri that is an equivalent to the given MediaStore Uri.

static MutableSet<String!>

Return list of all specific volume names that make up VOLUME_EXTERNAL.

static Long
getGeneration(context: Context, volumeName: String)

Return the latest generation value for the given volume.

static Uri!

Uri for querying the state of the media scanner.

static Uri?
getMediaUri(context: Context, documentUri: Uri)

Return a MediaStore Uri that is an equivalent to the given DocumentsProvider Uri.

static MutableSet<String!>

Return list of all recent volume names that have been part of VOLUME_EXTERNAL.

static Boolean

Return if the caller requires the original file contents when calling ContentResolver#openFileDescriptor(Uri, String).

static String
getVersion(context: Context)

Return an opaque version string describing the MediaStore state.

static String
getVersion(context: Context, volumeName: String)

Return an opaque version string describing the MediaStore state.

static String

Return the volume name that the given Uri references.

static Uri

Update the given Uri to also include any pending media items from calls such as ContentResolver#query(Uri, String[], Bundle, CancellationSignal).

static Uri

Update the given Uri to indicate that the caller requires the original file contents when calling ContentResolver#openFileDescriptor(Uri, String).

Properties

static Uri

A content:// style uri to the authority for the media provider

Constants

ACTION_IMAGE_CAPTURE

Added in API level 3
static val ACTION_IMAGE_CAPTURE: String

Standard Intent action that can be sent to have the camera application capture an image and return it.

The caller may pass an extra EXTRA_OUTPUT to control where this image will be written. If the EXTRA_OUTPUT is not present, then a small sized image is returned as a Bitmap object in the extra field. This is useful for applications that only need a small image. If the EXTRA_OUTPUT is present, then the full-sized image will be written to the Uri value of EXTRA_OUTPUT. As of android.os.Build.VERSION_CODES#LOLLIPOP, this uri can also be supplied through android.content.Intent#setClipData(ClipData). If using this approach, you still must supply the uri through the EXTRA_OUTPUT field for compatibility with old applications. If you don't set a ClipData, it will be copied there for you when calling Context#startActivity(Intent).

Note: if you app targets M and above and declares as using the android.Manifest.permission#CAMERA permission which is not granted, then attempting to use this action will result in a .

Value: "android.media.action.IMAGE_CAPTURE"

See Also

ACTION_IMAGE_CAPTURE_SECURE

Added in API level 17
static val ACTION_IMAGE_CAPTURE_SECURE: String

Intent action that can be sent to have the camera application capture an image and return it when the device is secured (e.g. with a pin, password, pattern, or face unlock). Applications responding to this intent must not expose any personal content like existing photos or videos on the device. The applications should be careful not to share any photo or video with other applications or Internet. The activity should use Activity#setShowWhenLocked to display on top of the lock screen while secured. There is no activity stack when this flag is used, so launching more than one activity is strongly discouraged.

The caller may pass an extra EXTRA_OUTPUT to control where this image will be written. If the EXTRA_OUTPUT is not present, then a small sized image is returned as a Bitmap object in the extra field. This is useful for applications that only need a small image. If the EXTRA_OUTPUT is present, then the full-sized image will be written to the Uri value of EXTRA_OUTPUT. As of android.os.Build.VERSION_CODES#LOLLIPOP, this uri can also be supplied through android.content.Intent#setClipData(ClipData). If using this approach, you still must supply the uri through the EXTRA_OUTPUT field for compatibility with old applications. If you don't set a ClipData, it will be copied there for you when calling Context#startActivity(Intent).

Value: "android.media.action.IMAGE_CAPTURE_SECURE"

ACTION_REVIEW

Added in API level 29
static val ACTION_REVIEW: String

Standard action that can be sent to review the given media file.

The launched application is expected to provide a large-scale view of the given media file, while allowing the user to quickly access other recently captured media files.

Input: Intent#getData is URI of the primary media item to initially display.

Value: "android.provider.action.REVIEW"

ACTION_REVIEW_SECURE

Added in API level 29
static val ACTION_REVIEW_SECURE: String

Standard action that can be sent to review the given media file when the device is secured (e.g. with a pin, password, pattern, or face unlock). The applications should be careful not to share any media with other applications or Internet. The activity should use Activity#setShowWhenLocked to display on top of the lock screen while secured. There is no activity stack when this flag is used, so launching more than one activity is strongly discouraged.

The launched application is expected to provide a large-scale view of the given primary media file, while only allowing the user to quickly access other media from an explicit secondary list.

Input: Intent#getData is URI of the primary media item to initially display. Intent#getClipData is the limited list of secondary media items that the user is allowed to review. If Intent#getClipData is undefined, then no other media access should be allowed.

Value: "android.provider.action.REVIEW_SECURE"

ACTION_VIDEO_CAPTURE

Added in API level 3
static val ACTION_VIDEO_CAPTURE: String

Standard Intent action that can be sent to have the camera application capture a video and return it.

The caller may pass in an extra EXTRA_VIDEO_QUALITY to control the video quality.

The caller may pass in an extra EXTRA_OUTPUT to control where the video is written. If EXTRA_OUTPUT is not present the video will be written to the standard location for videos, and the Uri of that location will be returned in the data field of the Uri. As of android.os.Build.VERSION_CODES#LOLLIPOP, this uri can also be supplied through android.content.Intent#setClipData(ClipData). If using this approach, you still must supply the uri through the EXTRA_OUTPUT field for compatibility with old applications. If you don't set a ClipData, it will be copied there for you when calling Context#startActivity(Intent).

Note: if you app targets M and above and declares as using the android.Manifest.permission#CAMERA permission which is not granted, then atempting to use this action will result in a .

Value: "android.media.action.VIDEO_CAPTURE"

AUTHORITY

Added in API level 1
static val AUTHORITY: String

The authority for the media provider

Value: "media"

EXTRA_BRIGHTNESS

Added in API level 29
static val EXTRA_BRIGHTNESS: String

When defined, the launched application is requested to set the given brightness value via android.view.WindowManager.LayoutParams#screenBrightness to help ensure a smooth transition when launching ACTION_REVIEW or ACTION_REVIEW_SECURE intents.

Value: "android.provider.extra.BRIGHTNESS"

EXTRA_DURATION_LIMIT

Added in API level 8
static val EXTRA_DURATION_LIMIT: String

Specify the maximum allowed recording duration in seconds.

Value: "android.intent.extra.durationLimit"

EXTRA_FINISH_ON_COMPLETION

Added in API level 3
static val EXTRA_FINISH_ON_COMPLETION: String

The name of the Intent-extra used to control the onCompletion behavior of a MovieView. This is a boolean property that specifies whether or not to finish the MovieView activity when the movie completes playing. The default value is true, which means to automatically exit the movie player activity when the movie completes playing.

Value: "android.intent.extra.finishOnCompletion"

EXTRA_FULL_SCREEN

Added in API level 8
static val EXTRA_FULL_SCREEN: String

The name of an Intent-extra used to control the UI of a ViewImage. This is a boolean property that overrides the activity's default fullscreen state.

Value: "android.intent.extra.fullScreen"

EXTRA_MEDIA_ALBUM

Added in API level 3
static val EXTRA_MEDIA_ALBUM: String

The name of the Intent-extra used to define the album

Value: "android.intent.extra.album"

EXTRA_MEDIA_ARTIST

Added in API level 3
static val EXTRA_MEDIA_ARTIST: String

The name of the Intent-extra used to define the artist

Value: "android.intent.extra.artist"

EXTRA_MEDIA_FOCUS

Added in API level 3
static val EXTRA_MEDIA_FOCUS: String

The name of the Intent-extra used to define the search focus. The search focus indicates whether the search should be for things related to the artist, album or song that is identified by the other extras.

Value: "android.intent.extra.focus"

EXTRA_MEDIA_GENRE

Added in API level 21
static val EXTRA_MEDIA_GENRE: String

The name of the Intent-extra used to define the genre.

Value: "android.intent.extra.genre"

EXTRA_MEDIA_PLAYLIST

Added in API level 21
static val EXTRA_MEDIA_PLAYLIST: String

The name of the Intent-extra used to define the playlist.

Value: "android.intent.extra.playlist"

EXTRA_MEDIA_RADIO_CHANNEL

Added in API level 21
static val EXTRA_MEDIA_RADIO_CHANNEL: String

The name of the Intent-extra used to define the radio channel.

Value: "android.intent.extra.radio_channel"

EXTRA_MEDIA_TITLE

Added in API level 3
static val EXTRA_MEDIA_TITLE: String

The name of the Intent-extra used to define the song title

Value: "android.intent.extra.title"

EXTRA_OUTPUT

Added in API level 3
static val EXTRA_OUTPUT: String

The name of the Intent-extra used to indicate a content resolver Uri to be used to store the requested image or video.

Value: "output"

EXTRA_SCREEN_ORIENTATION

Added in API level 3
static val EXTRA_SCREEN_ORIENTATION: String

The name of the Intent-extra used to control the orientation of a ViewImage or a MovieView. This is an int property that overrides the activity's requestedOrientation.

Value: "android.intent.extra.screenOrientation"

EXTRA_SHOW_ACTION_ICONS

Added in API level 8
static val EXTRA_SHOW_ACTION_ICONS: String

The name of an Intent-extra used to control the UI of a ViewImage. This is a boolean property that specifies whether or not to show action icons.

Value: "android.intent.extra.showActionIcons"

EXTRA_SIZE_LIMIT

Added in API level 8
static val EXTRA_SIZE_LIMIT: String

Specify the maximum allowed size.

Value: "android.intent.extra.sizeLimit"

EXTRA_VIDEO_QUALITY

Added in API level 3
static val EXTRA_VIDEO_QUALITY: String

The name of the Intent-extra used to control the quality of a recorded video. This is an integer property. Currently value 0 means low quality, suitable for MMS messages, and value 1 means high quality. In the future other quality levels may be added.

Value: "android.intent.extra.videoQuality"
Added in API level 9
static val INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH: String

An intent to perform a search for music media and automatically play content from the result when possible. This can be fired, for example, by the result of a voice recognition command to listen to music.

This intent always includes the android.provider.MediaStore#EXTRA_MEDIA_FOCUS and android.app.SearchManager#QUERY extras. The android.provider.MediaStore#EXTRA_MEDIA_FOCUS extra determines the search mode, and the value of the android.app.SearchManager#QUERY extra depends on the search mode. For more information about the search modes for this intent, see Play music based on a search query in Common Intents.

This intent makes the most sense for apps that can support large-scale search of music, such as services connected to an online database of music which can be streamed and played on the device.

Value: "android.media.action.MEDIA_PLAY_FROM_SEARCH"
Added in API level 3
static val INTENT_ACTION_MEDIA_SEARCH: String

Activity Action: Perform a search for media. Contains at least the android.app.SearchManager#QUERY extra. May also contain any combination of the following extras: EXTRA_MEDIA_ARTIST, EXTRA_MEDIA_ALBUM, EXTRA_MEDIA_TITLE, EXTRA_MEDIA_FOCUS

Value: "android.intent.action.MEDIA_SEARCH"

INTENT_ACTION_MUSIC_PLAYER

Added in API level 8
Deprecated in API level 15
static val INTENT_ACTION_MUSIC_PLAYER: String

Deprecated: Use android.content.Intent#CATEGORY_APP_MUSIC instead.

Activity Action: Launch a music player. The activity should be able to play, browse, or manipulate music files stored on the device.

Value: "android.intent.action.MUSIC_PLAYER"

INTENT_ACTION_STILL_IMAGE_CAMERA

Added in API level 3
static val INTENT_ACTION_STILL_IMAGE_CAMERA: String

The name of the Intent action used to launch a camera in still image mode.

Value: "android.media.action.STILL_IMAGE_CAMERA"

INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE

Added in API level 17
static val INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE: String

The name of the Intent action used to launch a camera in still image mode for use when the device is secured (e.g. with a pin, password, pattern, or face unlock). Applications responding to this intent must not expose any personal content like existing photos or videos on the device. The applications should be careful not to share any photo or video with other applications or internet. The activity should use Activity#setShowWhenLocked to display on top of the lock screen while secured. There is no activity stack when this flag is used, so launching more than one activity is strongly discouraged.

Value: "android.media.action.STILL_IMAGE_CAMERA_SECURE"
Added in API level 17
static val INTENT_ACTION_TEXT_OPEN_FROM_SEARCH: String

An intent to perform a search for readable media and automatically play content from the result when possible. This can be fired, for example, by the result of a voice recognition command to read a book or magazine.

Contains the android.app.SearchManager#QUERY extra, which is a string that can contain any type of unstructured text search, like the name of a book or magazine, an author a genre, a publisher, or any combination of these.

Because this intent includes an open-ended unstructured search string, it makes the most sense for apps that can support large-scale search of text media, such as services connected to an online database of books and/or magazines which can be read on the device.

Value: "android.media.action.TEXT_OPEN_FROM_SEARCH"

INTENT_ACTION_VIDEO_CAMERA

Added in API level 3
static val INTENT_ACTION_VIDEO_CAMERA: String

The name of the Intent action used to launch a camera in video mode.

Value: "android.media.action.VIDEO_CAMERA"
Added in API level 17
static val INTENT_ACTION_VIDEO_PLAY_FROM_SEARCH: String

An intent to perform a search for video media and automatically play content from the result when possible. This can be fired, for example, by the result of a voice recognition command to play movies.

Contains the android.app.SearchManager#QUERY extra, which is a string that can contain any type of unstructured video search, like the name of a movie, one or more actors, a genre, or any combination of these.

Because this intent includes an open-ended unstructured search string, it makes the most sense for apps that can support large-scale search of video, such as services connected to an online database of videos which can be streamed and played on the device.

Value: "android.media.action.VIDEO_PLAY_FROM_SEARCH"

MATCH_DEFAULT

Added in API level 30
static val MATCH_DEFAULT: Int

Value indicating that the default matching behavior should be used, as defined by the key documentation.

Value: 0

MATCH_EXCLUDE

Added in API level 30
static val MATCH_EXCLUDE: Int

Value indicating that operations should exclude items matching the criteria defined by this key.

Value: 2

MATCH_INCLUDE

Added in API level 30
static val MATCH_INCLUDE: Int

Value indicating that operations should include items matching the criteria defined by this key.

Note that items not matching the criteria may also be included depending on the default behavior documented by the key. If you want to operate exclusively on matching items, use MATCH_ONLY.

Value: 1

MATCH_ONLY

Added in API level 30
static val MATCH_ONLY: Int

Value indicating that operations should only operate on items explicitly matching the criteria defined by this key.

Value: 3

MEDIA_IGNORE_FILENAME

Added in API level 9
static val MEDIA_IGNORE_FILENAME: String

Name of the file signaling the media scanner to ignore media in the containing directory and its subdirectories. Developers should use this to avoid application graphics showing up in the Gallery and likewise prevent application sounds and music from showing up in the Music app.

Value: ".nomedia"

MEDIA_SCANNER_VOLUME

Added in API level 1
static val MEDIA_SCANNER_VOLUME: String

Name of current volume being scanned by the media scanner.

Value: "volume"
Added in API level 30
static val META_DATA_REVIEW_GALLERY_PREWARM_SERVICE: String

Name under which an activity handling ACTION_REVIEW or ACTION_REVIEW_SECURE publishes the service name for its prewarm service.

This meta-data should reference the fully qualified class name of the prewarm service

The prewarm service can be bound before starting ACTION_REVIEW or ACTION_REVIEW_SECURE. An application implementing this prewarm service should do the absolute minimum amount of work to initialize its resources to efficiently handle an ACTION_REVIEW or ACTION_REVIEW_SECURE in the near future.

Value: "android.media.review_gallery_prewarm_service"

META_DATA_STILL_IMAGE_CAMERA_PREWARM_SERVICE

Added in API level 23
static val META_DATA_STILL_IMAGE_CAMERA_PREWARM_SERVICE: String

Name under which an activity handling INTENT_ACTION_STILL_IMAGE_CAMERA or INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE publishes the service name for its prewarm service.

This meta-data should reference the fully qualified class name of the prewarm service extending CameraPrewarmService.

The prewarm service will get bound and receive a prewarm signal CameraPrewarmService#onPrewarm() when a camera launch intent fire might be imminent. An application implementing a prewarm service should do the absolute minimum amount of work to initialize the camera in order to reduce startup time in likely case that shortly after a camera launch intent would be sent.

Value: "android.media.still_image_camera_preview_service"

QUERY_ARG_MATCH_FAVORITE

Added in API level 30
static val QUERY_ARG_MATCH_FAVORITE: String

Specify how MediaColumns#IS_FAVORITE items should be filtered when performing a MediaStore operation.

This key can be placed in a Bundle of extras and passed to ContentResolver#query, ContentResolver#update, or ContentResolver#delete.

By default, favorite items are not filtered away from operations.
Value is either 0 or a combination of android.provider.MediaStore#MATCH_DEFAULT, android.provider.MediaStore#MATCH_INCLUDE, android.provider.MediaStore#MATCH_EXCLUDE, and android.provider.MediaStore#MATCH_ONLY

Value: "android:query-arg-match-favorite"

QUERY_ARG_MATCH_PENDING

Added in API level 30
static val QUERY_ARG_MATCH_PENDING: String

Specify how MediaColumns#IS_PENDING items should be filtered when performing a MediaStore operation.

This key can be placed in a Bundle of extras and passed to ContentResolver#query, ContentResolver#update, or ContentResolver#delete.

By default, pending items are filtered away from operations.
Value is either 0 or a combination of android.provider.MediaStore#MATCH_DEFAULT, android.provider.MediaStore#MATCH_INCLUDE, android.provider.MediaStore#MATCH_EXCLUDE, and android.provider.MediaStore#MATCH_ONLY

Value: "android:query-arg-match-pending"

QUERY_ARG_MATCH_TRASHED

Added in API level 30
static val QUERY_ARG_MATCH_TRASHED: String

Specify how MediaColumns#IS_TRASHED items should be filtered when performing a MediaStore operation.

This key can be placed in a Bundle of extras and passed to ContentResolver#query, ContentResolver#update, or ContentResolver#delete.

By default, trashed items are filtered away from operations.
Value is either 0 or a combination of android.provider.MediaStore#MATCH_DEFAULT, android.provider.MediaStore#MATCH_INCLUDE, android.provider.MediaStore#MATCH_EXCLUDE, and android.provider.MediaStore#MATCH_ONLY

Value: "android:query-arg-match-trashed"
Added in API level 30
static val QUERY_ARG_RELATED_URI: String

Specify a Uri that is "related" to the current operation being performed.

This is typically used to allow an operation that may normally be rejected, such as making a copy of a pre-existing image located under a MediaColumns#RELATIVE_PATH where new images are not allowed.

It's strongly recommended that when making a copy of pre-existing content that you define the "original document ID" GUID as defined by the XMP Media Management standard.

This key can be placed in a Bundle of extras and passed to ContentResolver#insert.

Value: "android:query-arg-related-uri"

UNKNOWN_STRING

Added in API level 8
static val UNKNOWN_STRING: String

The string that is used when a media attribute is not known. For example, if an audio file does not have any meta data, the artist and album columns will be set to this value.

Value: "<unknown>"

VOLUME_EXTERNAL

Added in API level 29
static val VOLUME_EXTERNAL: String

Synthetic volume name that provides a view of all content across the "external" storage of the device.

This synthetic volume provides a merged view of all media across all currently attached external storage devices.

Because this is a synthetic volume, you can't insert new content into this volume. Instead, you can insert content into a specific storage volume obtained from getExternalVolumeNames(android.content.Context).

Value: "external"

VOLUME_EXTERNAL_PRIMARY

Added in API level 29
static val VOLUME_EXTERNAL_PRIMARY: String

Specific volume name that represents the primary external storage device at Environment#getExternalStorageDirectory().

This volume may not always be available, such as when the user has ejected the device. You can find a list of all specific volume names using getExternalVolumeNames(android.content.Context).

Value: "external_primary"

VOLUME_INTERNAL

Added in API level 29
static val VOLUME_INTERNAL: String

Synthetic volume name that provides a view of all content across the "internal" storage of the device.

This synthetic volume provides a merged view of all media distributed with the device, such as built-in ringtones and wallpapers.

Because this is a synthetic volume, you can't insert new content into this volume.

Value: "internal"

Public constructors

<init>

MediaStore()

Public methods

createDeleteRequest

Added in API level 30
static fun createDeleteRequest(
    resolver: ContentResolver,
    uris: MutableCollection<Uri!>
): PendingIntent

Create a PendingIntent that will prompt the user to permanently delete the requested media items. When the user approves this request, ContentResolver#delete will be called on these items.

This call only generates the request for a prompt; to display the prompt, call Activity#startIntentSenderForResult with PendingIntent#getIntentSender(). You can then determine if the user granted your request by testing for Activity#RESULT_OK in Activity#onActivityResult. The requested operation will have completely finished before this activity result is delivered.

The displayed prompt will reflect all the media items you're requesting, including those for which you already hold write access. If you want to determine if you already hold write access before requesting access, use ContentResolver#checkUriPermission(Uri, int, int) with Intent#FLAG_GRANT_WRITE_URI_PERMISSION.

Parameters
resolver ContentResolver: Used to connect with MediaStore#AUTHORITY. Typically this value is Context#getContentResolver(), but if you need more explicit lifecycle controls, you can obtain a ContentProviderClient and wrap it using ContentResolver#wrap(ContentProviderClient). This value cannot be null.
uris MutableCollection<Uri!>: The set of media items to include in this request. Each item must be hosted by MediaStore#AUTHORITY and must reference a specific media item by BaseColumns#_ID. This value cannot be null.
Return
PendingIntent This value cannot be null.

createFavoriteRequest

Added in API level 30
static fun createFavoriteRequest(
    resolver: ContentResolver,
    uris: MutableCollection<Uri!>,
    value: Boolean
): PendingIntent

Create a PendingIntent that will prompt the user to favorite the requested media items. When the user approves this request, MediaColumns#IS_FAVORITE is set on these items.

This call only generates the request for a prompt; to display the prompt, call Activity#startIntentSenderForResult with PendingIntent#getIntentSender(). You can then determine if the user granted your request by testing for Activity#RESULT_OK in Activity#onActivityResult. The requested operation will have completely finished before this activity result is delivered.

The displayed prompt will reflect all the media items you're requesting, including those for which you already hold write access. If you want to determine if you already hold write access before requesting access, use ContentResolver#checkUriPermission(Uri, int, int) with Intent#FLAG_GRANT_WRITE_URI_PERMISSION.

Parameters
resolver ContentResolver: Used to connect with MediaStore#AUTHORITY. Typically this value is Context#getContentResolver(), but if you need more explicit lifecycle controls, you can obtain a ContentProviderClient and wrap it using ContentResolver#wrap(ContentProviderClient). This value cannot be null.
uris MutableCollection<Uri!>: The set of media items to include in this request. Each item must be hosted by MediaStore#AUTHORITY and must reference a specific media item by BaseColumns#_ID. This value cannot be null.
value Boolean: The MediaColumns#IS_FAVORITE value to apply.
Return
PendingIntent This value cannot be null.

createTrashRequest

Added in API level 30
static fun createTrashRequest(
    resolver: ContentResolver,
    uris: MutableCollection<Uri!>,
    value: Boolean
): PendingIntent

Create a PendingIntent that will prompt the user to trash the requested media items. When the user approves this request, MediaColumns#IS_TRASHED is set on these items.

This call only generates the request for a prompt; to display the prompt, call Activity#startIntentSenderForResult with PendingIntent#getIntentSender(). You can then determine if the user granted your request by testing for Activity#RESULT_OK in Activity#onActivityResult. The requested operation will have completely finished before this activity result is delivered.

The displayed prompt will reflect all the media items you're requesting, including those for which you already hold write access. If you want to determine if you already hold write access before requesting access, use ContentResolver#checkUriPermission(Uri, int, int) with Intent#FLAG_GRANT_WRITE_URI_PERMISSION.

Parameters
resolver ContentResolver: Used to connect with MediaStore#AUTHORITY. Typically this value is Context#getContentResolver(), but if you need more explicit lifecycle controls, you can obtain a ContentProviderClient and wrap it using ContentResolver#wrap(ContentProviderClient). This value cannot be null.
uris MutableCollection<Uri!>: The set of media items to include in this request. Each item must be hosted by MediaStore#AUTHORITY and must reference a specific media item by BaseColumns#_ID. This value cannot be null.
value Boolean: The MediaColumns#IS_TRASHED value to apply.
Return
PendingIntent This value cannot be null.

createWriteRequest

Added in API level 30
static fun createWriteRequest(
    resolver: ContentResolver,
    uris: MutableCollection<Uri!>
): PendingIntent

Create a PendingIntent that will prompt the user to grant your app write access for the requested media items.

This call only generates the request for a prompt; to display the prompt, call Activity#startIntentSenderForResult with PendingIntent#getIntentSender(). You can then determine if the user granted your request by testing for Activity#RESULT_OK in Activity#onActivityResult. The requested operation will have completely finished before this activity result is delivered.

Permissions granted through this mechanism are tied to the lifecycle of the Activity that requests them. If you need to retain longer-term access for background actions, you can place items into a ClipData or Intent which can then be passed to Context#startService or android.app.job.JobInfo.Builder#setClipData. Be sure to include any relevant access modes you want to retain, such as Intent#FLAG_GRANT_WRITE_URI_PERMISSION.

The displayed prompt will reflect all the media items you're requesting, including those for which you already hold write access. If you want to determine if you already hold write access before requesting access, use ContentResolver#checkUriPermission(Uri, int, int) with Intent#FLAG_GRANT_WRITE_URI_PERMISSION.

For security and performance reasons this method does not support Intent#FLAG_GRANT_PERSISTABLE_URI_PERMISSION or Intent#FLAG_GRANT_PREFIX_URI_PERMISSION.

The write access granted through this request is general-purpose, and once obtained you can directly ContentResolver#update columns like MediaColumns#IS_FAVORITE, MediaColumns#IS_TRASHED, or ContentResolver#delete.

Parameters
resolver ContentResolver: Used to connect with MediaStore#AUTHORITY. Typically this value is Context#getContentResolver(), but if you need more explicit lifecycle controls, you can obtain a ContentProviderClient and wrap it using ContentResolver#wrap(ContentProviderClient). This value cannot be null.
uris MutableCollection<Uri!>: The set of media items to include in this request. Each item must be hosted by MediaStore#AUTHORITY and must reference a specific media item by BaseColumns#_ID. This value cannot be null.
Return
PendingIntent This value cannot be null.

getDocumentUri

Added in API level 26
static fun getDocumentUri(
    context: Context,
    mediaUri: Uri
): Uri?

Return a DocumentsProvider Uri that is an equivalent to the given MediaStore Uri.

This allows apps with Storage Access Framework permissions to convert between MediaStore and DocumentsProvider Uris that refer to the same underlying item. Note that this method doesn't grant any new permissions; callers must already hold permissions obtained with Intent#ACTION_OPEN_DOCUMENT or related APIs.

Parameters
mediaUri Uri: The MediaStore Uri to convert. This value cannot be null.
context Context: This value cannot be null.
Return
Uri? An equivalent DocumentsProvider Uri. Returns null if no equivalent was found.

getExternalVolumeNames

Added in API level 29
static fun getExternalVolumeNames(context: Context): MutableSet<String!>

Return list of all specific volume names that make up VOLUME_EXTERNAL. This includes a unique volume name for each shared storage device that is currently attached, which typically includes MediaStore#VOLUME_EXTERNAL_PRIMARY.

Each specific volume name can be passed to APIs like MediaStore.Images.Media#getContentUri(String) to interact with media on that storage device.

Parameters
context Context: This value cannot be null.
Return
MutableSet<String!> This value cannot be null.

getGeneration

Added in API level 30
static fun getGeneration(
    context: Context,
    volumeName: String
): Long

Return the latest generation value for the given volume.

Generation numbers are useful for apps that are attempting to quickly identify exactly which media items have been added or changed since a previous point in time. Generation numbers are monotonically increasing over time, and can be safely arithmetically compared.

Detecting media changes using generation numbers is more robust than using MediaColumns#DATE_ADDED or MediaColumns#DATE_MODIFIED, since those values may change in unexpected ways when apps use File#setLastModified(long) or when the system clock is set incorrectly.

Note that before comparing these detailed generation values, you should first confirm that the overall version hasn't changed by checking MediaStore#getVersion(Context, String), since that indicates when a more radical change has occurred. If the overall version changes, you should assume that generation numbers have been reset and perform a full synchronization pass.

Parameters
volumeName String: specific volume to obtain an generation value for. Must be one of the values returned from getExternalVolumeNames(android.content.Context). This value cannot be null.
context Context: This value cannot be null.

getMediaScannerUri

Added in API level 1
static fun getMediaScannerUri(): Uri!

Uri for querying the state of the media scanner.

getMediaUri

Added in API level 29
static fun getMediaUri(
    context: Context,
    documentUri: Uri
): Uri?

Return a MediaStore Uri that is an equivalent to the given DocumentsProvider Uri.

This allows apps with Storage Access Framework permissions to convert between MediaStore and DocumentsProvider Uris that refer to the same underlying item. Note that this method doesn't grant any new permissions; callers must already hold permissions obtained with Intent#ACTION_OPEN_DOCUMENT or related APIs.

Parameters
documentUri Uri: The DocumentsProvider Uri to convert. This value cannot be null.
context Context: This value cannot be null.
Return
Uri? An equivalent MediaStore Uri. Returns null if no equivalent was found.

getRecentExternalVolumeNames

Added in API level 30
static fun getRecentExternalVolumeNames(context: Context): MutableSet<String!>

Return list of all recent volume names that have been part of VOLUME_EXTERNAL.

These volume names are not currently mounted, but they're likely to reappear in the future, so apps are encouraged to preserve any indexed metadata related to these volumes to optimize user experiences.

Each specific volume name can be passed to APIs like MediaStore.Images.Media#getContentUri(String) to interact with media on that storage device.

Parameters
context Context: This value cannot be null.
Return
MutableSet<String!> This value cannot be null.

getRequireOriginal

Added in API level 30
static fun getRequireOriginal(uri: Uri): Boolean

Return if the caller requires the original file contents when calling ContentResolver#openFileDescriptor(Uri, String).

Parameters
uri Uri: This value cannot be null.

getVersion

Added in API level 12
static fun getVersion(context: Context): String

Return an opaque version string describing the MediaStore state.

Applications that import data from MediaStore into their own caches can use this to detect that MediaStore has undergone substantial changes, and that data should be rescanned.

No other assumptions should be made about the meaning of the version.

This method returns the version for MediaStore#VOLUME_EXTERNAL_PRIMARY; to obtain a version for a different volume, use getVersion(android.content.Context,java.lang.String).

Parameters
context Context: This value cannot be null.
Return
String This value cannot be null.

getVersion

Added in API level 29
static fun getVersion(
    context: Context,
    volumeName: String
): String

Return an opaque version string describing the MediaStore state.

Applications that import data from MediaStore into their own caches can use this to detect that MediaStore has undergone substantial changes, and that data should be rescanned.

No other assumptions should be made about the meaning of the version.

Parameters
volumeName String: specific volume to obtain an opaque version string for. Must be one of the values returned from getExternalVolumeNames(android.content.Context). This value cannot be null.
context Context: This value cannot be null.
Return
String This value cannot be null.

getVolumeName

Added in API level 29
static fun getVolumeName(uri: Uri): String

Return the volume name that the given Uri references.

Parameters
uri Uri: This value cannot be null.
Return
String This value cannot be null.

setIncludePending

Added in API level 29
Deprecated in API level 30
static fun setIncludePending(uri: Uri): Uri

Deprecated: consider migrating to QUERY_ARG_MATCH_PENDING which is more expressive.

Update the given Uri to also include any pending media items from calls such as ContentResolver#query(Uri, String[], Bundle, CancellationSignal). By default no pending items are returned.

Parameters
uri Uri: This value cannot be null.
Return
Uri This value cannot be null.

setRequireOriginal

Added in API level 29
static fun setRequireOriginal(uri: Uri): Uri

Update the given Uri to indicate that the caller requires the original file contents when calling ContentResolver#openFileDescriptor(Uri, String).

This can be useful when the caller wants to ensure they're backing up the exact bytes of the underlying media, without any Exif redaction being performed.

If the original file contents cannot be provided, a UnsupportedOperationException will be thrown when the returned Uri is used, such as when the caller doesn't hold android.Manifest.permission#ACCESS_MEDIA_LOCATION.

Parameters
uri Uri: This value cannot be null.
Return
Uri This value cannot be null.

Properties

AUTHORITY_URI

Added in API level 29
static val AUTHORITY_URI: Uri

A content:// style uri to the authority for the media provider