MediaStore
  public
  
  final
  
  class
  MediaStore
  
    extends Object
  
  
  
  
  
  
| java.lang.Object | |
| ↳ | 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 | |
|---|---|
| 
        
        
        
        
        class | MediaStore.AudioCollection of all media with MIME type of  | 
| 
        
        
        
        
        interface | MediaStore.DownloadColumnsDownload metadata columns. | 
| 
        
        
        
        
        class | MediaStore.DownloadsCollection of downloaded items. | 
| 
        
        
        
        
        class | MediaStore.FilesMedia provider table containing an index of all files in the media storage, including non-media files. | 
| 
        
        
        
        
        class | MediaStore.ImagesCollection of all media with MIME type of  | 
| 
        
        
        
        
        interface | MediaStore.MediaColumnsCommon media metadata columns. | 
| 
        
        
        
        
        class | MediaStore.PickerMediaColumnsPhoto picker metadata columns. | 
| 
        
        
        
        
        class | MediaStore.VideoCollection of all media with MIME type of  | 
| Constants | |
|---|---|
| String | ACCESS_MEDIA_OWNER_PACKAGE_NAME_PERMISSIONPermission that grants access to  | 
| String | ACCESS_OEM_METADATA_PERMISSIONPermission that grants access to  | 
| String | ACTION_IMAGE_CAPTUREStandard Intent action that can be sent to have the camera application capture an image and return it. | 
| String | ACTION_IMAGE_CAPTURE_SECUREIntent 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). | 
| String | ACTION_MOTION_PHOTO_CAPTUREStandard Intent action that can be sent to have the camera application capture a motion photo and return it. | 
| String | ACTION_MOTION_PHOTO_CAPTURE_SECUREIntent action that can be sent to have the camera application capture a motion photo and return it when the device is secured (e.g. with a pin, password, pattern, or face unlock). | 
| String | ACTION_PICK_IMAGESActivity Action: Allow the user to select images or videos provided by system and return it. | 
| String | ACTION_PICK_IMAGES_SETTINGSActivity Action: Launch settings controlling images or videos selection with
  | 
| String | ACTION_REVIEWStandard action that can be sent to review the given media file. | 
| String | ACTION_REVIEW_SECUREStandard 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). | 
| String | ACTION_VIDEO_CAPTUREStandard Intent action that can be sent to have the camera application capture a video and return it. | 
| String | AUTHORITYThe authority for the media provider | 
| String | EXTRA_ACCEPT_ORIGINAL_MEDIA_FORMATSpecify that the caller wants to receive the original media format without transcoding. | 
| String | EXTRA_BRIGHTNESSWhen defined, the launched application is requested to set the given
 brightness value via
  | 
| String | EXTRA_DURATION_LIMITSpecify the maximum allowed recording duration in seconds. | 
| String | EXTRA_FINISH_ON_COMPLETIONThe name of the Intent-extra used to control the onCompletion behavior of a MovieView. | 
| String | EXTRA_FULL_SCREENThe name of an Intent-extra used to control the UI of a ViewImage. | 
| String | EXTRA_MEDIA_ALBUMThe name of the Intent-extra used to define the album | 
| String | EXTRA_MEDIA_ARTISTThe name of the Intent-extra used to define the artist | 
| String | EXTRA_MEDIA_CAPABILITIESSpecify the  | 
| String | EXTRA_MEDIA_CAPABILITIES_UIDSpecify the UID of the app that should be used to determine supported media capabilities while opening a media. | 
| String | EXTRA_MEDIA_FOCUSThe name of the Intent-extra used to define the search focus. | 
| String | EXTRA_MEDIA_GENREThe name of the Intent-extra used to define the genre. | 
| String | EXTRA_MEDIA_PLAYLISTThis constant was deprecated in API level 31. Android playlists are now deprecated. We will keep the current functionality for compatibility resons, but we will no longer take feature request. We do not advise adding new usages of Android Playlists. M3U files can be used as an alternative. | 
| String | EXTRA_MEDIA_RADIO_CHANNELThe name of the Intent-extra used to define the radio channel. | 
| String | EXTRA_MEDIA_TITLEThe name of the Intent-extra used to define the song title | 
| String | EXTRA_OUTPUTThe name of the Intent-extra used to indicate a content resolver Uri to be used to store the requested image or video. | 
| String | EXTRA_PICKER_PRE_SELECTION_URISThe name of an optional intent-extra used to specify URIs for pre-selection in photo picker
 opened with  | 
| String | EXTRA_PICK_IMAGES_ACCENT_COLORThe name of an optional intent-extra used to allow apps to specify the picker accent color. | 
| String | EXTRA_PICK_IMAGES_HIGHLIGHT_ALBUMThe name of an optional intent-extra used to allow apps to highlight media results of a
 photopicker album in the photopicker UI whenever feasible based on the given input album in
  | 
| String | EXTRA_PICK_IMAGES_HIGHLIGHT_SEARCH_RESULTSThe name of an optional intent-extra used to allow apps to highlight search results in the
 photopicker UI whenever feasible based on the given input text query in
  | 
| String | EXTRA_PICK_IMAGES_IN_ORDERThe name of an optional intent-extra used to allow ordered selection of items. | 
| String | EXTRA_PICK_IMAGES_LAUNCH_TABThe name of an optional intent-extra used to allow apps to specify the tab the picker should open with. | 
| String | EXTRA_PICK_IMAGES_MAXThe name of an optional intent-extra used to allow multiple selection of
 items and constrain maximum number of items that can be returned by
  | 
| String | EXTRA_SCREEN_ORIENTATIONThe name of the Intent-extra used to control the orientation of a ViewImage or a MovieView. | 
| String | EXTRA_SHOW_ACTION_ICONSThe name of an Intent-extra used to control the UI of a ViewImage. | 
| String | EXTRA_SIZE_LIMITSpecify the maximum allowed size. | 
| String | EXTRA_VIDEO_QUALITYThe name of the Intent-extra used to control the quality of a recorded video. | 
| String | INTENT_ACTION_MEDIA_PLAY_FROM_SEARCHAn intent to perform a search for music media and automatically play content from the result when possible. | 
| String | INTENT_ACTION_MEDIA_SEARCHActivity Action: Perform a search for media. | 
| String | INTENT_ACTION_MUSIC_PLAYER
      This constant was deprecated
      in API level 15.
    Use  | 
| String | INTENT_ACTION_STILL_IMAGE_CAMERAThe name of the Intent action used to launch a camera in still image mode. | 
| String | INTENT_ACTION_STILL_IMAGE_CAMERA_SECUREThe 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). | 
| String | INTENT_ACTION_TEXT_OPEN_FROM_SEARCHAn intent to perform a search for readable media and automatically play content from the result when possible. | 
| String | INTENT_ACTION_VIDEO_CAMERAThe name of the Intent action used to launch a camera in video mode. | 
| String | INTENT_ACTION_VIDEO_PLAY_FROM_SEARCHAn intent to perform a search for video media and automatically play content from the result when possible. | 
| String | KEY_PICK_IMAGES_HIGHLIGHT_ALBUM_IDOne of the  | 
| String | KEY_PICK_IMAGES_HIGHLIGHT_SEARCH_TEXT_QUERYOne of the  | 
| String | KEY_PICK_IMAGES_HIGHLIGHT_TYPEOne of the  | 
| int | MATCH_DEFAULTValue indicating that the default matching behavior should be used, as defined by the key documentation. | 
| int | MATCH_EXCLUDEValue indicating that operations should exclude items matching the criteria defined by this key. | 
| int | MATCH_INCLUDEValue indicating that operations should include items matching the criteria defined by this key. | 
| int | MATCH_ONLYValue indicating that operations should only operate on items explicitly matching the criteria defined by this key. | 
| String | MEDIA_IGNORE_FILENAMEName of the file signaling the media scanner to ignore media in the containing directory and its subdirectories. | 
| String | MEDIA_SCANNER_VOLUMEName of current volume being scanned by the media scanner. | 
| String | META_DATA_REVIEW_GALLERY_PREWARM_SERVICEName under which an activity handling  | 
| String | META_DATA_STILL_IMAGE_CAMERA_PREWARM_SERVICEName under which an activity handling  | 
| String | PICK_IMAGES_HIGHLIGHT_ALBUM_CAMERAOne of the possible album highlight values for
  | 
| String | PICK_IMAGES_HIGHLIGHT_ALBUM_DOWNLOADSOne of the possible album highlight values for
  | 
| String | PICK_IMAGES_HIGHLIGHT_ALBUM_FAVORITESOne of the possible album highlight values for
  | 
| String | PICK_IMAGES_HIGHLIGHT_ALBUM_SCREENSHOTSOne of the possible album highlight values for
  | 
| String | PICK_IMAGES_HIGHLIGHT_ALBUM_VIDEOSOne of the possible album highlight values for
  | 
| int | PICK_IMAGES_HIGHLIGHT_TYPE_COLLAPSEDOne of the permitted values for
  | 
| int | PICK_IMAGES_HIGHLIGHT_TYPE_EXPANDEDOne of the permitted values for
  | 
| int | PICK_IMAGES_TAB_ALBUMSOne of the permitted values for  | 
| int | PICK_IMAGES_TAB_IMAGESOne of the permitted values for  | 
| String | QUERY_ARG_INCLUDE_RECENTLY_UNMOUNTED_VOLUMESFlag that requests  | 
| String | QUERY_ARG_LATEST_SELECTION_ONLYFlag that indicates if only the latest selection in the photoPicker for the calling app should be returned. | 
| String | QUERY_ARG_MATCH_FAVORITESpecify how  | 
| String | QUERY_ARG_MATCH_PENDINGSpecify how  | 
| String | QUERY_ARG_MATCH_TRASHEDSpecify how  | 
| String | QUERY_ARG_MEDIA_STANDARD_SORT_ORDERFlag that requests  | 
| String | QUERY_ARG_RELATED_URISpecify a  | 
| String | UNKNOWN_STRINGThe string that is used when a media attribute is not known. | 
| String | VOLUME_EXTERNALSynthetic volume name that provides a view of all content across the "external" storage of the device. | 
| String | VOLUME_EXTERNAL_PRIMARYSpecific volume name that represents the primary external storage device
 at  | 
| String | VOLUME_INTERNALSynthetic volume name that provides a view of all content across the "internal" storage of the device. | 
| Fields | |
|---|---|
| 
    public
    static
    final
    Uri | AUTHORITY_URIA content:// style uri to the authority for the media provider | 
| Public constructors | |
|---|---|
| 
      MediaStore()
       | |
| Public methods | |
|---|---|
| 
        
        
        static
        
        
        boolean | 
      canManageMedia(Context context)
      Returns whether the calling app is granted  | 
| 
        
        
        static
        
        
        PendingIntent | 
      createDeleteRequest(ContentResolver resolver, Collection<Uri> uris)
      Create a  | 
| 
        
        
        static
        
        
        PendingIntent | 
      createFavoriteRequest(ContentResolver resolver, Collection<Uri> uris, boolean value)
      Create a  | 
| 
        
        
        static
        
        
        PendingIntent | 
      createTrashRequest(ContentResolver resolver, Collection<Uri> uris, boolean value)
      Create a  | 
| 
        
        
        static
        
        
        PendingIntent | 
      createWriteRequest(ContentResolver resolver, Collection<Uri> uris)
      Create a  | 
| 
        
        
        static
        
        
        Uri | 
      getDocumentUri(Context context, Uri mediaUri)
      Return a  | 
| 
        
        
        static
        
        
        Set<String> | 
      getExternalVolumeNames(Context context)
      Return list of all specific volume names that make up
  | 
| 
        
        
        static
        
        
        long | 
      getGeneration(Context context, String volumeName)
      Return the latest generation value for the given volume. | 
| 
        
        
        static
        
        
        Uri | 
      getMediaScannerUri()
      Uri for querying the state of the media scanner. | 
| 
        
        
        static
        
        
        Uri | 
      getMediaUri(Context context, Uri documentUri)
      Return a  | 
| 
        
        
        static
        
        
        ParcelFileDescriptor | 
      getOriginalMediaFormatFileDescriptor(Context context, ParcelFileDescriptor fileDescriptor)
      Returns  | 
| 
        
        
        static
        
        
        int | 
      getPickImagesMaxLimit()
      The maximum limit for the number of items that can be selected using
  | 
| 
        
        
        static
        
        
        Set<String> | 
      getRecentExternalVolumeNames(Context context)
      Return list of all recent volume names that have been part of
  | 
| 
        
        
        static
        
        
        Uri | 
      getRedactedUri(ContentResolver resolver, Uri uri)
      Returns an EXIF redacted version of  | 
| 
        
        
        static
        
        
        List<Uri> | 
      getRedactedUri(ContentResolver resolver, List<Uri> uris)
      Returns a list of EXIF redacted version of  | 
| 
        
        
        static
        
        
        boolean | 
      getRequireOriginal(Uri uri)
      Return if the caller requires the original file contents when calling
  | 
| 
        
        
        static
        
        
        String | 
      getVersion(Context context, String volumeName)
      Return an opaque version string describing the  | 
| 
        
        
        static
        
        
        String | 
      getVersion(Context context)
      Return an opaque version string describing the  | 
| 
        
        
        static
        
        
        String | 
      getVolumeName(Uri uri)
      Return the volume name that the given  | 
| 
        
        
        static
        
        
        boolean | 
      isCurrentCloudMediaProviderAuthority(ContentResolver resolver, String authority)
      Returns  | 
| 
        
        
        static
        
        
        boolean | 
      isCurrentSystemGallery(ContentResolver resolver, int uid, String packageName)
      Returns true if the given application is the current system gallery of the device. | 
| 
        
        
        static
        
        
        boolean | 
      isSupportedCloudMediaProviderAuthority(ContentResolver resolver, String authority)
      Returns  | 
| 
        
        
        static
        
        
        void | 
      markIsFavoriteStatus(ContentResolver resolver, Collection<Uri> uris, boolean areFavorites)
      Sets the media isFavorite status if the calling app has wider read permission on media files for given type. | 
| 
        
        
        static
        
        
        void | 
      notifyCloudMediaChangedEvent(ContentResolver resolver, String authority, String currentMediaCollectionId)
      Notifies the OS about a cloud media event requiring a full or incremental media collection
 sync for the currently enabled cloud provider,  | 
| 
        
        
        static
        
        
        AssetFileDescriptor | 
      openAssetFileDescriptor(ContentResolver resolver, Uri uri, String mode, CancellationSignal cancellationSignal)
      Works exactly the same as
  | 
| 
        
        
        static
        
        
        ParcelFileDescriptor | 
      openFileDescriptor(ContentResolver resolver, Uri uri, String mode, CancellationSignal cancellationSignal)
      Works exactly the same as
  | 
| 
        
        
        static
        
        
        AssetFileDescriptor | 
      openTypedAssetFileDescriptor(ContentResolver resolver, Uri uri, String mimeType, Bundle opts, CancellationSignal cancellationSignal)
      Works exactly the same as
  | 
| 
        
        
        static
        
        
        Uri | 
      setIncludePending(Uri uri)
      
      This method was deprecated
      in API level 30.
    consider migrating to  | 
| 
        
        
        static
        
        
        Uri | 
      setRequireOriginal(Uri uri)
      Update the given  | 
| Inherited methods | |
|---|---|
Constants
ACCESS_MEDIA_OWNER_PACKAGE_NAME_PERMISSION
public static final String ACCESS_MEDIA_OWNER_PACKAGE_NAME_PERMISSION
Permission that grants access to MediaColumns.OWNER_PACKAGE_NAME
 of every accessible media file.
Constant Value: "com.android.providers.media.permission.ACCESS_MEDIA_OWNER_PACKAGE_NAME"
ACCESS_OEM_METADATA_PERMISSION
public static final String ACCESS_OEM_METADATA_PERMISSION
Permission that grants access to MediaColumns.OEM_METADATA
 of every accessible media file.
Constant Value: "com.android.providers.media.permission.ACCESS_OEM_METADATA"
ACTION_IMAGE_CAPTURE
public static final String ACTION_IMAGE_CAPTURE
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 Build.VERSION_CODES.LOLLIPOP, this uri can also be supplied through
 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).
 
 Regardless of whether or not EXTRA_OUTPUT is present, when an image is captured via this
 intent, Camera.ACTION_NEW_PICTURE won't be broadcasted.
 
 Note: if you app targets M and above
 and declares as using the Manifest.permission.CAMERA permission which
 is not granted, then attempting to use this action will result in a SecurityException.
See also:
Constant Value: "android.media.action.IMAGE_CAPTURE"
ACTION_IMAGE_CAPTURE_SECURE
public static final String ACTION_IMAGE_CAPTURE_SECURE
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(boolean) 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 Build.VERSION_CODES.LOLLIPOP, this uri can also be supplied through
 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).
 
 Regardless of whether or not EXTRA_OUTPUT is present, when an image is captured via this
 intent, Camera.ACTION_NEW_PICTURE won't be broadcasted.
Constant Value: "android.media.action.IMAGE_CAPTURE_SECURE"
ACTION_MOTION_PHOTO_CAPTURE
public static final String ACTION_MOTION_PHOTO_CAPTURE
Standard Intent action that can be sent to have the camera application capture a motion photo and return it.
 The caller must either pass an extra EXTRA_OUTPUT to control where the image will be written,
 or a uri through Intent.setClipData(ClipData). If you don't set a
 ClipData, it will be copied there for you when calling Context.startActivity(Intent).
 
 When an image is captured via this intent, Camera.ACTION_NEW_PICTURE
 won't be broadcasted.
 
 Note: If your app declares as using the Manifest.permission.CAMERA permission
 which is not granted, then attempting to use this action will result in a SecurityException.
See also:
Constant Value: "android.provider.action.MOTION_PHOTO_CAPTURE"
ACTION_MOTION_PHOTO_CAPTURE_SECURE
public static final String ACTION_MOTION_PHOTO_CAPTURE_SECURE
Intent action that can be sent to have the camera application capture a
 motion photo 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(boolean) 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 must either pass an extra EXTRA_OUTPUT to control where the image will be written,
 or a uri through Intent.setClipData(ClipData). If you don't set a
 ClipData, it will be copied there for you when calling Context.startActivity(Intent).
 
 When an image is captured via this intent, Camera.ACTION_NEW_PICTURE
 won't be broadcasted.
See also:
Constant Value: "android.provider.action.MOTION_PHOTO_CAPTURE_SECURE"
ACTION_PICK_IMAGES
public static final String ACTION_PICK_IMAGES
Activity Action: Allow the user to select images or videos provided by system and return it.
 This is different than Intent.ACTION_PICK and Intent.ACTION_GET_CONTENT in
 that
 
- the data for this action is provided by the system
- this action is only used for picking images and videos
- caller gets read access to user picked items even without storage permissions
Callers can optionally specify MIME type (such as image/* or video/*),
 resulting in a range of content selection that the caller is interested in. The optional MIME
 type can be requested with Intent.setType(String).
 
If the caller needs multiple returned items (or caller wants to allow multiple selection),
 then it can specify MediaStore.EXTRA_PICK_IMAGES_MAX to indicate this.
 
When the caller requests multiple selection, the value of EXTRA_PICK_IMAGES_MAX must be a positive integer greater than 1 and less than or
 equal to MediaStore.getPickImagesMaxLimit, otherwise Activity.RESULT_CANCELED
 is returned. Use MediaStore.EXTRA_PICK_IMAGES_IN_ORDER in multiple selection mode to
 allow the user to pick images in order.
 
If the caller needs to specify the ApplicationMediaCapabilities that should be
 used while picking video files, use MediaStore.EXTRA_MEDIA_CAPABILITIES to indicate
 this.
 
When the requested file format does not match the capabilities specified by caller and the video duration is within the range that the system can handle, it will get transcoded to a default supported format, otherwise, the caller will receive the original file.
Callers may use Intent.EXTRA_LOCAL_ONLY to limit content selection to local data.
 
For system stability, it is preferred to open the URIs obtained from using this action
 by calling
 MediaStore.openFileDescriptor(ContentResolver, Uri, String, CancellationSignal),
 MediaStore.openAssetFileDescriptor(ContentResolver, Uri, String, CancellationSignal) or
 MediaStore.openTypedAssetFileDescriptor(ContentResolver, Uri, String, Bundle, CancellationSignal)
 instead of ContentResolver open APIs.
 
Output: MediaStore content URI(s) of the item(s) that was picked. Unlike other MediaStore
 URIs, these are referred to as 'picker' URIs and expose a limited set of read-only
 operations. Specifically, picker URIs can only be opened for read and queried for columns in
 PickerMediaColumns.
 
Before this API, apps could use Intent.ACTION_GET_CONTENT. However, ACTION_PICK_IMAGES is now the recommended option for images and videos, since it offers a
 better user experience.
Constant Value: "android.provider.action.PICK_IMAGES"
ACTION_PICK_IMAGES_SETTINGS
public static final String ACTION_PICK_IMAGES_SETTINGS
Activity Action: Launch settings controlling images or videos selection with
 ACTION_PICK_IMAGES.
 The settings page allows a user to change the enabled CloudMediaProvider on the
 device and other media selection configurations.
Constant Value: "android.provider.action.PICK_IMAGES_SETTINGS"
ACTION_REVIEW
public static final String ACTION_REVIEW
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.
See also:
Constant Value: "android.provider.action.REVIEW"
ACTION_REVIEW_SECURE
public static final String ACTION_REVIEW_SECURE
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.
See also:
Constant Value: "android.provider.action.REVIEW_SECURE"
ACTION_VIDEO_CAPTURE
public static final String ACTION_VIDEO_CAPTURE
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.
 Camera.ACTION_NEW_VIDEOwill also be broadcasted when the video is recorded.
- If EXTRA_OUTPUT is assigned a Uri value, no
 Camera.ACTION_NEW_VIDEOwill be broadcasted. As ofBuild.VERSION_CODES.LOLLIPOP, this uri can also be supplied throughIntent.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 callingContext.startActivity(Intent).
Note: if you app targets M and above
 and declares as using the Manifest.permission.CAMERA permission which
 is not granted, then atempting to use this action will result in a SecurityException.
See also:
Constant Value: "android.media.action.VIDEO_CAPTURE"
AUTHORITY
public static final String AUTHORITY
The authority for the media provider
Constant Value: "media"
EXTRA_ACCEPT_ORIGINAL_MEDIA_FORMAT
public static final String EXTRA_ACCEPT_ORIGINAL_MEDIA_FORMAT
Specify that the caller wants to receive the original media format without transcoding.
 Caution: using this flag can cause app
 compatibility issues whenever Android adds support for new media formats.
 Clients should instead specify their supported media capabilities explicitly
 in their manifest or with the EXTRA_MEDIA_CAPABILITIES open flag.
 This option is useful for apps that don't attempt to parse the actual byte contents of media
 files, such as playback using MediaPlayer or for off-device backup. Note that the
 Manifest.permission.ACCESS_MEDIA_LOCATION permission will still be required
 to avoid sensitive metadata redaction, similar to setRequireOriginal(android.net.Uri).
 
 Note that this flag overrides any explicitly declared media_capabilities.xml or
 ApplicationMediaCapabilities extras specified in the same open request.
 
This option can be added to the opts Bundle in various
 ContentResolver open methods.
See also:
Constant Value: "android.provider.extra.ACCEPT_ORIGINAL_MEDIA_FORMAT"
EXTRA_BRIGHTNESS
public static final String EXTRA_BRIGHTNESS
When defined, the launched application is requested to set the given
 brightness value via
 WindowManager.LayoutParams.screenBrightness to help
 ensure a smooth transition when launching ACTION_REVIEW or
 ACTION_REVIEW_SECURE intents.
Constant Value: "android.provider.extra.BRIGHTNESS"
EXTRA_DURATION_LIMIT
public static final String EXTRA_DURATION_LIMIT
Specify the maximum allowed recording duration in seconds.
Constant Value: "android.intent.extra.durationLimit"
EXTRA_FINISH_ON_COMPLETION
public static final String EXTRA_FINISH_ON_COMPLETION
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.
Constant Value: "android.intent.extra.finishOnCompletion"
EXTRA_FULL_SCREEN
public static final String EXTRA_FULL_SCREEN
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.
Constant Value: "android.intent.extra.fullScreen"
EXTRA_MEDIA_ALBUM
public static final String EXTRA_MEDIA_ALBUM
The name of the Intent-extra used to define the album
Constant Value: "android.intent.extra.album"
EXTRA_MEDIA_ARTIST
public static final String EXTRA_MEDIA_ARTIST
The name of the Intent-extra used to define the artist
Constant Value: "android.intent.extra.artist"
EXTRA_MEDIA_CAPABILITIES
public static final String EXTRA_MEDIA_CAPABILITIES
Specify the ApplicationMediaCapabilities that should be used while opening a media
 or picking media files.
 
If the capabilities specified matches the format of the original file, the app will receive the original file, otherwise, it will get transcoded to a default supported format.
When used while opening a media, add this option to the opts Bundle in
 various ContentResolver open methods. This flag takes higher precedence over
 the applications declared media_capabilities.xml and is useful for apps that want to
 have more granular control over their supported media capabilities.
 
When used while picking media files, add this option to the intent-extra of
 MediaStore.ACTION_PICK_IMAGES.
See also:
Constant Value: "android.provider.extra.MEDIA_CAPABILITIES"
EXTRA_MEDIA_CAPABILITIES_UID
public static final String EXTRA_MEDIA_CAPABILITIES_UID
Specify the UID of the app that should be used to determine supported media capabilities while opening a media. If this specified UID is found to be capable of handling the original media file format, the app will receive the original file, otherwise, the file will get transcoded to a default format supported by the specified UID.
Constant Value: "android.provider.extra.MEDIA_CAPABILITIES_UID"
EXTRA_MEDIA_FOCUS
public static final String EXTRA_MEDIA_FOCUS
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.
Constant Value: "android.intent.extra.focus"
EXTRA_MEDIA_GENRE
public static final String EXTRA_MEDIA_GENRE
The name of the Intent-extra used to define the genre.
Constant Value: "android.intent.extra.genre"
EXTRA_MEDIA_PLAYLIST
public static final String EXTRA_MEDIA_PLAYLIST
      This constant was deprecated
      in API level 31.
    Android playlists are now deprecated. We will keep the current
             functionality for compatibility resons, but we will no longer take feature
             request. We do not advise adding new usages of Android Playlists. M3U files can
             be used as an alternative.
  
The name of the Intent-extra used to define the playlist.
Constant Value: "android.intent.extra.playlist"
EXTRA_MEDIA_RADIO_CHANNEL
public static final String EXTRA_MEDIA_RADIO_CHANNEL
The name of the Intent-extra used to define the radio channel.
Constant Value: "android.intent.extra.radio_channel"
EXTRA_MEDIA_TITLE
public static final String EXTRA_MEDIA_TITLE
The name of the Intent-extra used to define the song title
Constant Value: "android.intent.extra.title"
EXTRA_OUTPUT
public static final String EXTRA_OUTPUT
The name of the Intent-extra used to indicate a content resolver Uri to be used to store the requested image or video.
Constant Value: "output"
EXTRA_PICKER_PRE_SELECTION_URIS
public static final String EXTRA_PICKER_PRE_SELECTION_URIS
The name of an optional intent-extra used to specify URIs for pre-selection in photo picker
 opened with MediaStore.ACTION_PICK_IMAGES in multi-select mode.
 
Only MediaStore content URI(s) of the item(s) received as a result of
 MediaStore.ACTION_PICK_IMAGES action are accepted. The value of this intent-extra
 should be an ArrayList of type URIs. Default value is null. Maximum number of URIs
 that can be accepted is limited by the value passed in
 MediaStore.EXTRA_PICK_IMAGES_MAX as part of the MediaStore.ACTION_PICK_IMAGES
 intent. In case the count of input URIs is greater than the limit then
 IllegalArgumentException is thrown.
The provided list will be checked for permissions and authority. Any URI that is inaccessible, doesn't match the current authorities(local or cloud) or is invalid will be filtered out.
The items corresponding to the URIs will appear selected when the photo picker is opened.
 In the case of MediaStore.EXTRA_PICK_IMAGES_IN_ORDER the chronological order of the
 input list will be used for ordered selection of the pre-selected items.
This is not a mechanism to revoke permissions for items, i.e. de-selection of a pre-selected item by the user will not result in revocation of the grant.
Constant Value: "android.provider.extra.PICKER_PRE_SELECTION_URIS"
EXTRA_PICK_IMAGES_ACCENT_COLOR
public static final String EXTRA_PICK_IMAGES_ACCENT_COLOR
The name of an optional intent-extra used to allow apps to specify the picker accent color.
 The extra can only be specified in MediaStore.ACTION_PICK_IMAGES.
 The accent color will be used for various primary elements in the PhotoPicker view.
 All other colors will be set based on android material guidelines.
 
 The value of this intent extra should be a long color value. The alpha component of the
 given color is not taken into account while setting the accent color. We assume full color
 opacity.
 Only colors with luminance(can also be understood as brightness) greater than 0.05 and
 less than 0.9 are permitted.
 Luminance of a color is determined using:
 luminance = Color.luminance(color)
       where color is the input accent color to be set.
 Check ERROR(/Color) docs for more details on color luminance and long color values.
 In case the luminance of the input color is unacceptable, picker colors will be set
 based on the colors of the device android theme.
 In case of an invalid input color value i.e. the input color cannot be parsed,
 IllegalArgumentException is thrown.
Constant Value: "android.provider.extra.PICK_IMAGES_ACCENT_COLOR"
EXTRA_PICK_IMAGES_HIGHLIGHT_ALBUM
public static final String EXTRA_PICK_IMAGES_HIGHLIGHT_ALBUM
The name of an optional intent-extra used to allow apps to highlight media results of a
 photopicker album in the photopicker UI whenever feasible based on the given input album in
 MediaStore.KEY_PICK_IMAGES_HIGHLIGHT_ALBUM_ID.
 The extra can only be specified in MediaStore.ACTION_PICK_IMAGES.
 
 This intent extra will accept a Bundle object. The bundle object should have two
 keys specified.
 The first key MediaStore.KEY_PICK_IMAGES_HIGHLIGHT_TYPE will
 specify the type of media highlight the app wants to opt for and should be one of
 MediaStore.PICK_IMAGES_HIGHLIGHT_TYPE_COLLAPSED for a highlighted media section to
 be shown when the photopicker launches or
 MediaStore.PICK_IMAGES_HIGHLIGHT_TYPE_EXPANDED to open the photopicker to show
 a highlighted media results grid based on the given input album.
 Any other value for this key will result in throwing IllegalArgumentException.
 The second bundle key MediaStore.KEY_PICK_IMAGES_HIGHLIGHT_ALBUM_ID
 will specify the album to be highlighted and its value should be one of:
 MediaStore.PICK_IMAGES_HIGHLIGHT_ALBUM_FAVORITES for the Favorites album,
 MediaStore.PICK_IMAGES_HIGHLIGHT_ALBUM_CAMERA for the Camera album,
 MediaStore.PICK_IMAGES_HIGHLIGHT_ALBUM_SCREENSHOTS for the Screenshots album,
 MediaStore.PICK_IMAGES_HIGHLIGHT_ALBUM_VIDEOS for the Videos album and
 MediaStore.PICK_IMAGES_HIGHLIGHT_ALBUM_DOWNLOADS for the Downloads album.
 Any other value for this key will result in throwing IllegalArgumentException.
 Highlighting media results based on an input string text query is also supported. See
 MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_SEARCH_RESULTS for more details.
 Only one of MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_SEARCH_RESULTS or
 MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_ALBUM should be used at any given time.
 Specifying both will result in IllegalArgumentException to be thrown.
Constant Value: "android.provider.extra.PICK_IMAGES_HIGHLIGHT_ALBUM"
EXTRA_PICK_IMAGES_HIGHLIGHT_SEARCH_RESULTS
public static final String EXTRA_PICK_IMAGES_HIGHLIGHT_SEARCH_RESULTS
The name of an optional intent-extra used to allow apps to highlight search results in the
 photopicker UI whenever feasible based on the given input text query in
 MediaStore.KEY_PICK_IMAGES_HIGHLIGHT_SEARCH_TEXT_QUERY
 The extra can only be specified in MediaStore.ACTION_PICK_IMAGES.
 
 This intent extra will accept a Bundle object. The bundle object should have two
 keys specified.
 The first key MediaStore.KEY_PICK_IMAGES_HIGHLIGHT_TYPE will
 specify the type of media highlight the app wants to opt for and should be one of
 MediaStore.PICK_IMAGES_HIGHLIGHT_TYPE_COLLAPSED for a highlighted media section to
 be shown when the photopicker launches or
 MediaStore.PICK_IMAGES_HIGHLIGHT_TYPE_EXPANDED to open the photopicker to show
 a highlighted media results grid based on the given input query.
 Any other value for this key will result in throwing IllegalArgumentException.
 The second bundle key MediaStore.KEY_PICK_IMAGES_HIGHLIGHT_SEARCH_TEXT_QUERY
 will accept a string value specifying the query for highlighting media results.
 If this input value is empty, the request to highlight media will be ignored and
 no highlight will be shown at all. In case of null input query,
 IllegalArgumentException is thrown.
 Highlighting media results of a photopicker album is also supported. See
 MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_ALBUM for more details.
 Only one of MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_SEARCH_RESULTS or
 MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_ALBUM should be used at any given time.
 Specifying both will result in IllegalArgumentException to be thrown.
Constant Value: "android.provider.extra.PICK_IMAGES_HIGHLIGHT_SEARCH_RESULTS"
EXTRA_PICK_IMAGES_IN_ORDER
public static final String EXTRA_PICK_IMAGES_IN_ORDER
The name of an optional intent-extra used to allow ordered selection of items. Set this extra
 to true to allow the user to see the order of their selected items. The result returned to
 the caller will be the same as the user selected order. This extra is only allowed via the
 MediaStore.ACTION_PICK_IMAGES.
 
The value of this intent-extra should be a boolean. Default value is false.
See also:
Constant Value: "android.provider.extra.PICK_IMAGES_IN_ORDER"
EXTRA_PICK_IMAGES_LAUNCH_TAB
public static final String EXTRA_PICK_IMAGES_LAUNCH_TAB
The name of an optional intent-extra used to allow apps to specify the tab the picker should
 open with. The extra can only be specified in MediaStore.ACTION_PICK_IMAGES.
 
 The value of this intent-extra must be one of: MediaStore.PICK_IMAGES_TAB_ALBUMS
 for the albums tab and MediaStore.PICK_IMAGES_TAB_IMAGES for the photos tab.
 The system will decide which tab to open by default and in most cases,
 it is MediaStore.PICK_IMAGES_TAB_IMAGES i.e. the photos tab.
Constant Value: "android.provider.extra.PICK_IMAGES_LAUNCH_TAB"
EXTRA_PICK_IMAGES_MAX
public static final String EXTRA_PICK_IMAGES_MAX
The name of an optional intent-extra used to allow multiple selection of
 items and constrain maximum number of items that can be returned by
 MediaStore.ACTION_PICK_IMAGES, action may still return nothing
 (0 items) if the user chooses to cancel.
 
 The value of this intent-extra should be a positive integer greater
 than 1 and less than or equal to
 MediaStore.getPickImagesMaxLimit, otherwise
 Activity.RESULT_CANCELED is returned.
Constant Value: "android.provider.extra.PICK_IMAGES_MAX"
EXTRA_SCREEN_ORIENTATION
public static final String EXTRA_SCREEN_ORIENTATION
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.
Constant Value: "android.intent.extra.screenOrientation"
EXTRA_SHOW_ACTION_ICONS
public static final String EXTRA_SHOW_ACTION_ICONS
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.
Constant Value: "android.intent.extra.showActionIcons"
EXTRA_SIZE_LIMIT
public static final String EXTRA_SIZE_LIMIT
Specify the maximum allowed size.
Constant Value: "android.intent.extra.sizeLimit"
EXTRA_VIDEO_QUALITY
public static final String EXTRA_VIDEO_QUALITY
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.
Constant Value: "android.intent.extra.videoQuality"
INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH
public static final String INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH
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 EXTRA_MEDIA_FOCUS
 and SearchManager.QUERY extras. The
 EXTRA_MEDIA_FOCUS extra determines the search mode, and
 the value of the 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.
Constant Value: "android.media.action.MEDIA_PLAY_FROM_SEARCH"
INTENT_ACTION_MEDIA_SEARCH
public static final String INTENT_ACTION_MEDIA_SEARCH
Activity Action: Perform a search for media.
 Contains at least the SearchManager.QUERY extra.
 May also contain any combination of the following extras:
 EXTRA_MEDIA_ARTIST, EXTRA_MEDIA_ALBUM, EXTRA_MEDIA_TITLE, EXTRA_MEDIA_FOCUS
Constant Value: "android.intent.action.MEDIA_SEARCH"
INTENT_ACTION_MUSIC_PLAYER
public static final String INTENT_ACTION_MUSIC_PLAYER
      This constant was deprecated
      in API level 15.
    Use 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.
Constant Value: "android.intent.action.MUSIC_PLAYER"
INTENT_ACTION_STILL_IMAGE_CAMERA
public static final String INTENT_ACTION_STILL_IMAGE_CAMERA
The name of the Intent action used to launch a camera in still image mode.
Constant Value: "android.media.action.STILL_IMAGE_CAMERA"
INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE
public static final String INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE
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(boolean) 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.
Constant Value: "android.media.action.STILL_IMAGE_CAMERA_SECURE"
INTENT_ACTION_TEXT_OPEN_FROM_SEARCH
public static final String INTENT_ACTION_TEXT_OPEN_FROM_SEARCH
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 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.
Constant Value: "android.media.action.TEXT_OPEN_FROM_SEARCH"
INTENT_ACTION_VIDEO_CAMERA
public static final String INTENT_ACTION_VIDEO_CAMERA
The name of the Intent action used to launch a camera in video mode.
Constant Value: "android.media.action.VIDEO_CAMERA"
INTENT_ACTION_VIDEO_PLAY_FROM_SEARCH
public static final String INTENT_ACTION_VIDEO_PLAY_FROM_SEARCH
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 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.
Constant Value: "android.media.action.VIDEO_PLAY_FROM_SEARCH"
KEY_PICK_IMAGES_HIGHLIGHT_ALBUM_ID
public static final String KEY_PICK_IMAGES_HIGHLIGHT_ALBUM_ID
One of the Bundle keys for
 MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_ALBUM specifying the photopicker album for
 which the app can request to show highlighted media results in the photopicker.
 The value of this key should be one of
 MediaStore.PICK_IMAGES_HIGHLIGHT_ALBUM_FAVORITES,
 MediaStore.PICK_IMAGES_HIGHLIGHT_ALBUM_CAMERA,
 MediaStore.PICK_IMAGES_HIGHLIGHT_ALBUM_VIDEOS,
 MediaStore.PICK_IMAGES_HIGHLIGHT_ALBUM_SCREENSHOTS or
 MediaStore.PICK_IMAGES_HIGHLIGHT_ALBUM_DOWNLOADS.
 Any other value for this key will result in throwing IllegalArgumentException.
 See: MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_ALBUM
Constant Value: "android.provider.media.key.PICK_IMAGES_HIGHLIGHT_MEDIA_ALBUM_ID"
KEY_PICK_IMAGES_HIGHLIGHT_SEARCH_TEXT_QUERY
public static final String KEY_PICK_IMAGES_HIGHLIGHT_SEARCH_TEXT_QUERY
One of the Bundle keys for
 MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_SEARCH_RESULTS specifying the input query for
 which the app can request to show highlighted media results in the photopicker.
 The photopicker will trigger a search based on this input value to show
 highlighted media results.
 The value of this key can be any string value for which the app wants to show highlighted
 results.
 In case the input text query is null, IllegalArgumentException is thrown.
 Read more: MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_SEARCH_RESULTS
Constant Value: "android.provider.media.key.PICK_IMAGES_HIGHLIGHT_SEARCH_TEXT_QUERY"
KEY_PICK_IMAGES_HIGHLIGHT_TYPE
public static final String KEY_PICK_IMAGES_HIGHLIGHT_TYPE
One of the Bundle keys for
 MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_SEARCH_RESULTS and
 MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_ALBUM to specify the highlight type
 i.e. the way the highlighted media results will be shown in the photopicker.
 The value can be one of MediaStore.PICK_IMAGES_HIGHLIGHT_TYPE_COLLAPSED to show a
 highlight media section in the photopicker or
 MediaStore.PICK_IMAGES_HIGHLIGHT_TYPE_EXPANDED to show a highlighted media
 results grid.
 Any other value for this key will result in throwing IllegalArgumentException.
 Read more: MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_SEARCH_RESULTS
Constant Value: "android.provider.media.key.PICK_IMAGES_HIGHLIGHT_TYPE"
MATCH_DEFAULT
public static final int MATCH_DEFAULT
Value indicating that the default matching behavior should be used, as defined by the key documentation.
Constant Value: 0 (0x00000000)
MATCH_EXCLUDE
public static final int MATCH_EXCLUDE
Value indicating that operations should exclude items matching the criteria defined by this key.
Constant Value: 2 (0x00000002)
MATCH_INCLUDE
public static final int MATCH_INCLUDE
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.
Constant Value: 1 (0x00000001)
MATCH_ONLY
public static final int MATCH_ONLY
Value indicating that operations should only operate on items explicitly matching the criteria defined by this key.
Constant Value: 3 (0x00000003)
MEDIA_IGNORE_FILENAME
public static final String MEDIA_IGNORE_FILENAME
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.
Constant Value: ".nomedia"
MEDIA_SCANNER_VOLUME
public static final String MEDIA_SCANNER_VOLUME
Name of current volume being scanned by the media scanner.
Constant Value: "volume"
META_DATA_REVIEW_GALLERY_PREWARM_SERVICE
public static final String META_DATA_REVIEW_GALLERY_PREWARM_SERVICE
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.
Constant Value: "android.media.review_gallery_prewarm_service"
META_DATA_STILL_IMAGE_CAMERA_PREWARM_SERVICE
public static final String META_DATA_STILL_IMAGE_CAMERA_PREWARM_SERVICE
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.
Constant Value: "android.media.still_image_camera_preview_service"
PICK_IMAGES_HIGHLIGHT_ALBUM_CAMERA
public static final String PICK_IMAGES_HIGHLIGHT_ALBUM_CAMERA
One of the possible album highlight values for
 MediaStore.KEY_PICK_IMAGES_HIGHLIGHT_ALBUM_ID in case
 an app chooses to highlight media results from an album, in this case, the
 Camera album.
 Read more: MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_ALBUM
Constant Value: "android.provider.media.PICK_IMAGES_HIGHLIGHT_ALBUM_CAMERA"
PICK_IMAGES_HIGHLIGHT_ALBUM_DOWNLOADS
public static final String PICK_IMAGES_HIGHLIGHT_ALBUM_DOWNLOADS
One of the possible album highlight values for
 MediaStore.KEY_PICK_IMAGES_HIGHLIGHT_ALBUM_ID in case
 an app chooses to highlight media results from an album, in this case, the
 Downloads album.
 Read more: MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_ALBUM
Constant Value: "android.provider.media.PICK_IMAGES_HIGHLIGHT_ALBUM_DOWNLOADS"
PICK_IMAGES_HIGHLIGHT_ALBUM_FAVORITES
public static final String PICK_IMAGES_HIGHLIGHT_ALBUM_FAVORITES
One of the possible album highlight values for
 MediaStore.KEY_PICK_IMAGES_HIGHLIGHT_ALBUM_ID
 in case an app chooses to highlight media results from an album, in this case, the
 Favorites album.
 Read more: MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_ALBUM
Constant Value: "android.provider.media.PICK_IMAGES_HIGHLIGHT_ALBUM_FAVORITES"
PICK_IMAGES_HIGHLIGHT_ALBUM_SCREENSHOTS
public static final String PICK_IMAGES_HIGHLIGHT_ALBUM_SCREENSHOTS
One of the possible album highlight values for
 MediaStore.KEY_PICK_IMAGES_HIGHLIGHT_ALBUM_ID
 in case an app chooses to highlight media results from from an album, in this case, the
 Screenshots album.
 Read more: MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_ALBUM
Constant Value: "android.provider.media.PICK_IMAGES_HIGHLIGHT_ALBUM_SCREENSHOTS"
PICK_IMAGES_HIGHLIGHT_ALBUM_VIDEOS
public static final String PICK_IMAGES_HIGHLIGHT_ALBUM_VIDEOS
One of the possible album highlight values for
 MediaStore.KEY_PICK_IMAGES_HIGHLIGHT_ALBUM_ID in case
 an app chooses to highlight media results from an album, in this case, the
 Videos album.
 Read more: MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_ALBUM
Constant Value: "android.provider.media.PICK_IMAGES_HIGHLIGHT_ALBUM_VIDEOS"
PICK_IMAGES_HIGHLIGHT_TYPE_COLLAPSED
public static final int PICK_IMAGES_HIGHLIGHT_TYPE_COLLAPSED
One of the permitted values for
 MediaStore.KEY_PICK_IMAGES_HIGHLIGHT_TYPE
 to highlight media results as a highlighted media section in the photopicker based on the
 given input query in MediaStore.KEY_PICK_IMAGES_HIGHLIGHT_SEARCH_TEXT_QUERY or the
 given input photopicker album in MediaStore#KEY_PICK_IMAGES_HIGHLIGHT_ALBUM_ID}.
 Read more: MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_SEARCH_RESULTS and
 MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_ALBUM
Constant Value: 0 (0x00000000)
PICK_IMAGES_HIGHLIGHT_TYPE_EXPANDED
public static final int PICK_IMAGES_HIGHLIGHT_TYPE_EXPANDED
One of the permitted values for
 MediaStore.KEY_PICK_IMAGES_HIGHLIGHT_TYPE
 to show a highlighted media results grid based on the given input query in
 MediaStore.KEY_PICK_IMAGES_HIGHLIGHT_SEARCH_TEXT_QUERY or the given input
 photopicker album in MediaStore#KEY_PICK_IMAGES_HIGHLIGHT_ALBUM_ID}.
 Read more: MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_SEARCH_RESULTS and
 MediaStore.EXTRA_PICK_IMAGES_HIGHLIGHT_ALBUM
Constant Value: 1 (0x00000001)
PICK_IMAGES_TAB_ALBUMS
public static final int PICK_IMAGES_TAB_ALBUMS
One of the permitted values for MediaStore.EXTRA_PICK_IMAGES_LAUNCH_TAB to open the
 picker with albums tab.
Constant Value: 0 (0x00000000)
PICK_IMAGES_TAB_IMAGES
public static final int PICK_IMAGES_TAB_IMAGES
One of the permitted values for MediaStore.EXTRA_PICK_IMAGES_LAUNCH_TAB to open the
 picker with photos tab.
Constant Value: 1 (0x00000001)
QUERY_ARG_INCLUDE_RECENTLY_UNMOUNTED_VOLUMES
public static final String QUERY_ARG_INCLUDE_RECENTLY_UNMOUNTED_VOLUMES
Flag that requests ContentResolver.query to include content from
 recently unmounted volumes.
 
 When the flag is set, ContentResolver.query will return content
 from all volumes(i.e., both mounted and recently unmounted volume whose
 content is still held by MediaProvider).
 
Note that the query result doesn't provide any hint for content from unmounted volume. It's strongly recommended to use default query to avoid accessing/operating on the content that are not available on the device.
The flag is useful for apps which manage their own database and query MediaStore in order to synchronize between MediaStore database and their own database.
Constant Value: "android:query-arg-recently-unmounted-volumes"
QUERY_ARG_LATEST_SELECTION_ONLY
public static final String QUERY_ARG_LATEST_SELECTION_ONLY
Flag that indicates if only the latest selection in the photoPicker for the calling app should be returned. If set to true, all items that were granted to the calling app in the last selection are returned.
Selection in this scenario refers to when the user selects items in the permission prompt photo picker. The access for these items is granted to the calling app and these grants are persisted unless the user deselects a granted item explicitly.
The result excludes items owned by the calling app unless they are explicitly selected by the user.
Note: If there has been no user selections after the introduction of this feature then all the granted items will be returned.
This key can be placed in a Bundle of extras and passed to
 ContentResolver.query.
Constant Value: "android:query-arg-latest-selection-only"
QUERY_ARG_MATCH_FAVORITE
public static final String QUERY_ARG_MATCH_FAVORITE
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 MATCH_DEFAULT, MATCH_INCLUDE, MATCH_EXCLUDE, and MATCH_ONLY
See also:
Constant Value: "android:query-arg-match-favorite"
QUERY_ARG_MATCH_PENDING
public static final String QUERY_ARG_MATCH_PENDING
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 MATCH_DEFAULT, MATCH_INCLUDE, MATCH_EXCLUDE, and MATCH_ONLY
Constant Value: "android:query-arg-match-pending"
QUERY_ARG_MATCH_TRASHED
public static final String QUERY_ARG_MATCH_TRASHED
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 MATCH_DEFAULT, MATCH_INCLUDE, MATCH_EXCLUDE, and MATCH_ONLY
See also:
Constant Value: "android:query-arg-match-trashed"
QUERY_ARG_MEDIA_STANDARD_SORT_ORDER
public static final String QUERY_ARG_MEDIA_STANDARD_SORT_ORDER
Flag that requests ContentResolver.query to sort the result in descending order
 based on MediaColumns.INFERRED_DATE.
 
 When this flag is used as an extra in a Bundle passed to
 ContentResolver.query, all other sorting options such as
 ContentResolver.QUERY_ARG_SORT_COLUMNS or
 ContentResolver.QUERY_ARG_SQL_SORT_ORDER are disregarded.
Constant Value: "android:query-arg-media-standard-sort-order"
QUERY_ARG_RELATED_URI
public static final String QUERY_ARG_RELATED_URI
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.
Constant Value: "android:query-arg-related-uri"
UNKNOWN_STRING
public static final String UNKNOWN_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.
Constant Value:
      
          "
VOLUME_EXTERNAL
public static final String VOLUME_EXTERNAL
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).
Constant Value: "external"
VOLUME_EXTERNAL_PRIMARY
public static final String VOLUME_EXTERNAL_PRIMARY
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).
Constant Value: "external_primary"
VOLUME_INTERNAL
public static final String VOLUME_INTERNAL
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.
Constant Value: "internal"
Fields
AUTHORITY_URI
public static final Uri AUTHORITY_URI
A content:// style uri to the authority for the media provider
Public constructors
Public methods
canManageMedia
public static boolean canManageMedia (Context context)
Returns whether the calling app is granted Manifest.permission.MANAGE_MEDIA
 or not.
 
Declaring the permission Manifest.permission.MANAGE_MEDIA isn't
 enough to gain the access.
 
To request access, use Settings.ACTION_REQUEST_MANAGE_MEDIA.
| Parameters | |
|---|---|
| context | Context: the request context
 This value cannot benull. | 
| Returns | |
|---|---|
| boolean | true, the calling app is granted the permission. Otherwise, false | 
createDeleteRequest
public static PendingIntent createDeleteRequest (ContentResolver resolver, Collection<Uri> uris)
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
 Context.checkUriPermission(Uri, int, int, int) with
 Intent.FLAG_GRANT_WRITE_URI_PERMISSION.
 
 Note: if your app targets Build.VERSION_CODES.BAKLAVA
 and above, you can send a maximum of 2000 uris in each request.
 Attempting to send more than 2000 uris will result in a
 IllegalArgumentException.
| Parameters | |
|---|---|
| resolver | ContentResolver: Used to connect withMediaStore.AUTHORITY.
            Typically this value isContext.getContentResolver(),
            but if you need more explicit lifecycle controls, you can
            obtain aContentProviderClientand wrap it usingContentResolver.wrap(ContentProviderClient).
 This value cannot benull. | 
| uris | Collection: The set of media items to include in this request. Each item
            must be hosted byMediaStore.AUTHORITYand must
            reference a specific media item byBaseColumns._ID.
 This value cannot benull. | 
| Returns | |
|---|---|
| PendingIntent | This value cannot be null. | 
createFavoriteRequest
public static PendingIntent createFavoriteRequest (ContentResolver resolver, Collection<Uri> uris, boolean value)
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
 Context.checkUriPermission(Uri, int, int, int) with
 Intent.FLAG_GRANT_WRITE_URI_PERMISSION.
 
 Note: if your app targets Build.VERSION_CODES.BAKLAVA
 and above, you can send a maximum of 2000 uris in each request.
 Attempting to send more than 2000 uris will result in a
 IllegalArgumentException.
| Parameters | |
|---|---|
| resolver | ContentResolver: Used to connect withMediaStore.AUTHORITY.
            Typically this value isContext.getContentResolver(),
            but if you need more explicit lifecycle controls, you can
            obtain aContentProviderClientand wrap it usingContentResolver.wrap(ContentProviderClient).
 This value cannot benull. | 
| uris | Collection: The set of media items to include in this request. Each item
            must be hosted byMediaStore.AUTHORITYand must
            reference a specific media item byBaseColumns._ID.
 This value cannot benull. | 
| value | boolean: TheMediaColumns.IS_FAVORITEvalue to apply. | 
| Returns | |
|---|---|
| PendingIntent | This value cannot be null. | 
createTrashRequest
public static PendingIntent createTrashRequest (ContentResolver resolver, Collection<Uri> uris, boolean value)
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
 Context.checkUriPermission(Uri, int, int, int) with
 Intent.FLAG_GRANT_WRITE_URI_PERMISSION.
 
 Note: if your app targets Build.VERSION_CODES.BAKLAVA
 and above, you can send a maximum of 2000 uris in each request.
 Attempting to send more than 2000 uris will result in a
 IllegalArgumentException.
| Parameters | |
|---|---|
| resolver | ContentResolver: Used to connect withMediaStore.AUTHORITY.
            Typically this value isContext.getContentResolver(),
            but if you need more explicit lifecycle controls, you can
            obtain aContentProviderClientand wrap it usingContentResolver.wrap(ContentProviderClient).
 This value cannot benull. | 
| uris | Collection: The set of media items to include in this request. Each item
            must be hosted byMediaStore.AUTHORITYand must
            reference a specific media item byBaseColumns._ID.
 This value cannot benull. | 
| value | boolean: TheMediaColumns.IS_TRASHEDvalue to apply. | 
| Returns | |
|---|---|
| PendingIntent | This value cannot be null. | 
createWriteRequest
public static PendingIntent createWriteRequest (ContentResolver resolver, Collection<Uri> uris)
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
 JobInfo.Builder.setClipData(ClipData, int). 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
 Context.checkUriPermission(Uri, int, 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.
 
 Note: if your app targets Build.VERSION_CODES.BAKLAVA
 and above, you can send a maximum of 2000 uris in each request.
 Attempting to send more than 2000 uris will result in a
 IllegalArgumentException.
| Parameters | |
|---|---|
| resolver | ContentResolver: Used to connect withMediaStore.AUTHORITY.
            Typically this value isContext.getContentResolver(),
            but if you need more explicit lifecycle controls, you can
            obtain aContentProviderClientand wrap it usingContentResolver.wrap(ContentProviderClient).
 This value cannot benull. | 
| uris | Collection: The set of media items to include in this request. Each item
            must be hosted byMediaStore.AUTHORITYand must
            reference a specific media item byBaseColumns._ID.
 This value cannot benull. | 
| Returns | |
|---|---|
| PendingIntent | This value cannot be null. | 
getDocumentUri
public static Uri getDocumentUri (Context context, Uri mediaUri)
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 | |
|---|---|
| context | Context: This value cannot benull. | 
| mediaUri | Uri: TheMediaStoreUri to convert.
 This value cannot benull. | 
| Returns | |
|---|---|
| Uri | An equivalent DocumentsProviderUri. Returnsnullif no equivalent was found. | 
See also:
getExternalVolumeNames
public static Set<String> getExternalVolumeNames (Context context)
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 benull. | 
| Returns | |
|---|---|
| Set<String> | This value cannot be null. | 
getGeneration
public static long getGeneration (Context context, String volumeName)
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 | |
|---|---|
| context | Context: This value cannot benull. | 
| volumeName | String: specific volume to obtain an generation value for. Must
            be one of the values returned fromgetExternalVolumeNames(android.content.Context).
 This value cannot benull. | 
| Returns | |
|---|---|
| long | |
getMediaScannerUri
public static Uri getMediaScannerUri ()
Uri for querying the state of the media scanner.
| Returns | |
|---|---|
| Uri | |
getMediaUri
public static Uri getMediaUri (Context context, Uri documentUri)
Return a MediaStore Uri that is an equivalent to the given
 DocumentsProvider Uri. This only supports ExternalStorageProvider
 and MediaDocumentsProvider Uris.
 
 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, but it grants the same access to
 the Media Store Uri as the caller has to the given DocumentsProvider Uri; callers must
 already hold permissions for documentUri obtained with Intent.ACTION_OPEN_DOCUMENT
 or related APIs.
| Parameters | |
|---|---|
| context | Context: This value cannot benull. | 
| documentUri | Uri: TheDocumentsProviderUri to convert.
 This value cannot benull. | 
| Returns | |
|---|---|
| Uri | An equivalent MediaStoreUri. Returnsnullif no
         equivalent was found. | 
See also:
getOriginalMediaFormatFileDescriptor
public static ParcelFileDescriptor getOriginalMediaFormatFileDescriptor (Context context, ParcelFileDescriptor fileDescriptor)
Returns ParcelFileDescriptor representing the original media file format for
 fileDescriptor.
 
Media files may get transcoded based on an application's media capabilities requirements.
 However, in various cases, when the application needs access to the original media file, or
 doesn't attempt to parse the actual byte contents of media files, such as playback using
 MediaPlayer or for off-device backup, this method can be useful.
 
This method is applicable only for media files managed by MediaStore.
 
The method returns the original file descriptor with the same permission that the caller has for the input file descriptor.
| Parameters | |
|---|---|
| context | Context: This value cannot benull. | 
| fileDescriptor | ParcelFileDescriptor: This value cannot benull. | 
| Returns | |
|---|---|
| ParcelFileDescriptor | This value cannot be null. | 
| Throws | |
|---|---|
| IOException | if the given ParcelFileDescriptorcould not be converted | 
See also:
getPickImagesMaxLimit
public static int getPickImagesMaxLimit ()
The maximum limit for the number of items that can be selected using
 MediaStore.ACTION_PICK_IMAGES when launched in multiple selection mode.
 This can be used as a constant value for MediaStore.EXTRA_PICK_IMAGES_MAX.
| Returns | |
|---|---|
| int | |
getRecentExternalVolumeNames
public static Set<String> getRecentExternalVolumeNames (Context context)
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 benull. | 
| Returns | |
|---|---|
| Set<String> | This value cannot be null. | 
getRedactedUri
public static Uri getRedactedUri (ContentResolver resolver, Uri uri)
Returns an EXIF redacted version of uri i.e. a Uri with metadata such as
 location, GPS datestamp etc. redacted from the EXIF headers.
 
 A redacted Uri can be used to share a file with another application wherein exposing
 sensitive information in EXIF headers is not desirable.
 Note:
 1. Redacted uris cannot be granted write access and can neither be used to perform any kind
 of write operations.
 2. To get a redacted uri the caller must hold read permission to uri.
| Parameters | |
|---|---|
| resolver | ContentResolver: TheContentResolverused to connect withMediaStore.AUTHORITY. Typically this value is gotten fromContext.getContentResolver()This value cannot benull. | 
| uri | Uri: theUriUri to convert
 This value cannot benull. | 
| Returns | |
|---|---|
| Uri | redacted version of the uri. Returnsnullwhen the givenUricould not be found or is unsupported | 
| Throws | |
|---|---|
| SecurityException | if the caller doesn't have the read access to uri | 
See also:
getRedactedUri
public static List<Uri> getRedactedUri (ContentResolver resolver, List<Uri> uris)
Returns a list of EXIF redacted version of uris i.e. a Uri with metadata
 such as location, GPS datestamp etc. redacted from the EXIF headers.
 
 A redacted Uri can be used to share a file with another application wherein exposing
 sensitive information in EXIF headers is not desirable.
 Note:
 1. Order of the returned uris follow the order of the uris.
 2. Redacted uris cannot be granted write access and can neither be used to perform any kind
 of write operations.
 3. To get a redacted uri the caller must hold read permission to its corresponding uri.
| Parameters | |
|---|---|
| resolver | ContentResolver: TheContentResolverused to connect withMediaStore.AUTHORITY. Typically this value is gotten fromContext.getContentResolver()This value cannot benull. | 
| uris | List: the list ofUriUri to convert
 This value cannot benull. | 
| Returns | |
|---|---|
| List<Uri> | a list with redacted version of uris, in the same order. Returnsnullwhen the correspondingUricould not be found or is unsupported | 
| Throws | |
|---|---|
| SecurityException | if the caller doesn't have the read access to all the elements
 in uris | 
| IllegalArgumentException | if all the uris in urisdon't belong to same user id | 
See also:
getRequireOriginal
public static boolean getRequireOriginal (Uri uri)
Return if the caller requires the original file contents when calling
 ContentResolver.openFileDescriptor(Uri, String).
| Parameters | |
|---|---|
| uri | Uri: This value cannot benull. | 
| Returns | |
|---|---|
| boolean | |
See also:
getVersion
public static String getVersion (Context context, String volumeName)
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.
 It can return null if requested volume is not mounted. Apps should check
 for volume to be present in getExternalVolumeNames(android.content.Context)
 before using this API.
| Parameters | |
|---|---|
| context | Context: This value cannot benull. | 
| volumeName | String: specific volume to obtain an opaque version string for.
            Must be one of the values returned fromgetExternalVolumeNames(android.content.Context).
 This value cannot benull. | 
| Returns | |
|---|---|
| String | |
getVersion
public static String getVersion (Context context)
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.
 It can return null if external primary volume is not mounted. Apps should
 check for volume to be present in getExternalVolumeNames(android.content.Context)
 before using this API.
 
 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 benull. | 
| Returns | |
|---|---|
| String | |
getVolumeName
public static String getVolumeName (Uri uri)
Return the volume name that the given Uri references.
| Parameters | |
|---|---|
| uri | Uri: This value cannot benull. | 
| Returns | |
|---|---|
| String | This value cannot be null. | 
isCurrentCloudMediaProviderAuthority
public static boolean isCurrentCloudMediaProviderAuthority (ContentResolver resolver, String authority)
Returns true if and only if the caller with authority is the currently
 enabled CloudMediaProvider. More specifically, false is also returned
 if the calling uid doesn't match the uid of the authority.
| Parameters | |
|---|---|
| resolver | ContentResolver: This value cannot benull. | 
| authority | String: This value cannot benull. | 
| Returns | |
|---|---|
| boolean | |
isCurrentSystemGallery
public static boolean isCurrentSystemGallery (ContentResolver resolver, int uid, String packageName)
Returns true if the given application is the current system gallery of the device.
The system gallery is one app chosen by the OEM that has read & write access to all photos and videos on the device and control over folders in media collections.
| Parameters | |
|---|---|
| resolver | ContentResolver: TheContentResolverused to connect withMediaStore.AUTHORITY. Typically this value isContext.getContentResolver().
 This value cannot benull. | 
| uid | int: The uid to be checked if it is the current system gallery. | 
| packageName | String: The package name to be checked if it is the current system gallery.
 This value cannot benull. | 
| Returns | |
|---|---|
| boolean | |
isSupportedCloudMediaProviderAuthority
public static boolean isSupportedCloudMediaProviderAuthority (ContentResolver resolver, String authority)
Returns true if and only if the caller with authority is a supported
 CloudMediaProvider. More specifically, false is also returned
 if the calling uid doesn't match the uid of the authority.
| Parameters | |
|---|---|
| resolver | ContentResolver: This value cannot benull. | 
| authority | String: This value cannot benull. | 
| Returns | |
|---|---|
| boolean | |
markIsFavoriteStatus
public static void markIsFavoriteStatus (ContentResolver resolver, Collection<Uri> uris, boolean areFavorites)
Sets the media isFavorite status if the calling app has wider read permission on media files for given type. Calling app should have one of READ_EXTERNAL_STORAGE or WRITE_EXTERNAL_STORAGE if target sdk <= T. For target sdk > T, it should have READ_MEDIA_IMAGES for images, READ_MEDIA_VIDEOS for videos or READ_MEDIA_AUDIO for audio files or MANAGE_EXTERNAL_STORAGE permission.
| Parameters | |
|---|---|
| resolver | ContentResolver: used to connect withMediaStore.AUTHORITYThis value cannot benull. | 
| uris | Collection: a collection of media items to include in this request. Each item
            must be hosted byMediaStore.AUTHORITYand must
            reference a specific media item byBaseColumns._IDsample uri - content://media/external_primary/images/media/24
 This value cannot benull. | 
| areFavorites | boolean: theMediaColumns.IS_FAVORITEvalue to apply. | 
notifyCloudMediaChangedEvent
public static void notifyCloudMediaChangedEvent (ContentResolver resolver, String authority, String currentMediaCollectionId)
Notifies the OS about a cloud media event requiring a full or incremental media collection
 sync for the currently enabled cloud provider, authority.
 The OS will schedule the sync in the background and will attempt to batch frequent
 notifications into a single sync event.
 If the caller is not the currently enabled cloud provider as returned by
 isCurrentCloudMediaProviderAuthority(android.content.ContentResolver, java.lang.String), the request will be
 unsuccessful.
| Parameters | |
|---|---|
| resolver | ContentResolver: This value cannot benull. | 
| authority | String: This value cannot benull. | 
| currentMediaCollectionId | String: This value cannot benull. | 
| Throws | |
|---|---|
| SecurityException | if the request was unsuccessful. | 
openAssetFileDescriptor
public static AssetFileDescriptor openAssetFileDescriptor (ContentResolver resolver, Uri uri, String mode, CancellationSignal cancellationSignal)
Works exactly the same as
 ContentResolver.openAssetFileDescriptor(Uri, String, CancellationSignal),
 but only works for Uri whose scheme is ContentResolver.SCHEME_CONTENT
 and its authority is MediaStore.AUTHORITY.
 
 This API is preferred over
 ContentResolver.openAssetFileDescriptor(Uri, String, CancellationSignal) when opening
 media Uri for ensuring system stability especially when opening URIs returned as a result of
 using MediaStore.ACTION_PICK_IMAGES
| Parameters | |
|---|---|
| resolver | ContentResolver: TheContentResolverused to connect withMediaStore.AUTHORITY. Typically this value is gotten fromContext.getContentResolver()This value cannot benull. | 
| uri | Uri: The desired URI to open.
 This value cannot benull. | 
| mode | String: The string representation of the file mode. Can be "r", "w", "wt", "wa", "rw"
             or "rwt". Please note the exact implementation of these may differ for each
             Provider implementation - for example, "w" may or may not truncate.
 This value cannot benull. | 
| cancellationSignal | CancellationSignal: This value may benull. | 
| Returns | |
|---|---|
| AssetFileDescriptor | a new ParcelFileDescriptor pointing to the file or nullif the
 provider recently crashed. You own this descriptor and are responsible for closing it
 when done. | 
| Throws | |
|---|---|
| FileNotFoundException | if no file exists under the URI. | 
| IllegalArgumentException | if The URI is not for MediaStore.AUTHORITY | 
openFileDescriptor
public static ParcelFileDescriptor openFileDescriptor (ContentResolver resolver, Uri uri, String mode, CancellationSignal cancellationSignal)
Works exactly the same as
 ContentResolver.openFileDescriptor(Uri, String, CancellationSignal), but only works
 for Uri whose scheme is ContentResolver.SCHEME_CONTENT and its authority is
 MediaStore.AUTHORITY.
 
 This API is preferred over
 ContentResolver.openFileDescriptor(Uri, String, CancellationSignal) when opening
 media Uri for ensuring system stability especially when opening URIs returned as a result of
 using MediaStore.ACTION_PICK_IMAGES
| Parameters | |
|---|---|
| resolver | ContentResolver: TheContentResolverused to connect withMediaStore.AUTHORITY. Typically this value is gotten fromContext.getContentResolver()This value cannot benull. | 
| uri | Uri: The desired URI to open.
 This value cannot benull. | 
| mode | String: The string representation of the file mode. Can be "r", "w", "wt", "wa", "rw"
             or "rwt". Please note the exact implementation of these may differ for each
             Provider implementation - for example, "w" may or may not truncate.
 This value cannot benull. | 
| cancellationSignal | CancellationSignal: A signal to cancel the operation in progress,
         or null if none. If the operation is canceled, thenOperationCanceledExceptionwill be thrown. | 
| Returns | |
|---|---|
| ParcelFileDescriptor | a new ParcelFileDescriptor pointing to the file or nullif the
 provider recently crashed. You own this descriptor and are responsible for closing it
 when done. | 
| Throws | |
|---|---|
| FileNotFoundException | if no file exists under the URI. | 
| IllegalArgumentException | if The URI is not for MediaStore.AUTHORITY | 
openTypedAssetFileDescriptor
public static AssetFileDescriptor openTypedAssetFileDescriptor (ContentResolver resolver, Uri uri, String mimeType, Bundle opts, CancellationSignal cancellationSignal)
Works exactly the same as
 ContentResolver.openTypedAssetFileDescriptor(Uri, String, Bundle, CancellationSignal),
 but only works for Uri whose scheme is ContentResolver.SCHEME_CONTENT
 and its authority is MediaStore.AUTHORITY.
 
 This API is preferred over
 ContentResolver.openTypedAssetFileDescriptor(Uri, String, Bundle, CancellationSignal)
 when opening media Uri for ensuring system stability especially when opening URIs returned
 as a result of using MediaStore.ACTION_PICK_IMAGES
| Parameters | |
|---|---|
| resolver | ContentResolver: TheContentResolverused to connect withMediaStore.AUTHORITY. Typically this value is gotten fromContext.getContentResolver()This value cannot benull. | 
| uri | Uri: The desired URI to open.
 This value cannot benull. | 
| mimeType | String: The desired MIME type of the returned data.  This can
 be a pattern such as */*, which will allow the content provider to
 select a type, though there is no way for you to determine what type
 it is returning.
 This value cannot benull. | 
| opts | Bundle: Additional provider-dependent options.
 This value may benull. | 
| cancellationSignal | CancellationSignal: This value may benull. | 
| Returns | |
|---|---|
| AssetFileDescriptor | a new ParcelFileDescriptor from which you can read the
 data stream from the provider or nullif the provider recently crashed.
 Note that this may be a pipe, meaning you can't seek in it.  The only seek you
 should do is if the AssetFileDescriptor contains an offset, to move to that offset before
 reading.  You own this descriptor and are responsible for closing it when done. | 
| Throws | |
|---|---|
| FileNotFoundException | if no data of the desired type exists under the URI. | 
| IllegalArgumentException | if The URI is not for MediaStore.AUTHORITY | 
setIncludePending
public static Uri setIncludePending (Uri uri)
      This method was deprecated
      in API level 30.
    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 benull. | 
| Returns | |
|---|---|
| Uri | This value cannot be null. | 
See also:
setRequireOriginal
public static Uri setRequireOriginal (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
 Manifest.permission.ACCESS_MEDIA_LOCATION.
| Parameters | |
|---|---|
| uri | Uri: This value cannot benull. | 
| Returns | |
|---|---|
| Uri | This value cannot be null. | 
See also:
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-09-17 UTC.
