ActivityResultContracts.PickVisualMedia

open class ActivityResultContracts.PickVisualMedia : ActivityResultContract


An ActivityResultContract to use the Photo Picker to select a single image, video, or other type of visual media.

This contract always prefers the system framework provided Photo Picker available via MediaStore.ACTION_PICK_IMAGES when it is available, but will also provide a fallback on devices that it is not available to ensure a consistent API surface across all Android API 19 or higher devices.

The priority order for handling the Photo Picker is:

  1. The system framework provided MediaStore.ACTION_PICK_IMAGES.

The input is a PickVisualMediaRequest.

The output is a Uri when the user has selected a media or null when the user hasn't selected any item. Keep in mind that Uri returned by the photo picker isn't writable.

This can be extended to override createIntent if you wish to pass additional extras to the Intent created by super.createIntent().

Summary

Nested types

VisualMediaType object used to filter images and video when using the photo picker.

VisualMediaType object used to filter images only when using the photo picker.

VisualMediaType class used to filter a single mime type only when using the photo picker.

VisualMediaType object used to filter video only when using the photo picker.

Represents filter input type accepted by the photo picker.

Constants

const String

In cases where the system framework provided MediaStore.ACTION_PICK_IMAGES Photo Picker cannot be implemented, OEMs or system apps can provide a consistent Photo Picker experience to those devices by creating an Activity that handles this action.

const String

Extra that will be sent by PickMultipleVisualMedia to an Activity that handles ACTION_SYSTEM_FALLBACK_PICK_IMAGES that indicates that maximum number of photos the user should select.

Public companion functions

Boolean

This function is deprecated. This method is deprecated in favor of isPhotoPickerAvailable(context) to support the picker provided by updatable system apps

Boolean

Check if the current device has support for the photo picker by checking the running Android version, the SDK extension version or the picker provided by a system app implementing ACTION_SYSTEM_FALLBACK_PICK_IMAGES.

Public constructors

Public functions

open Intent

Create an intent that can be used for android.app.Activity.startActivityForResult.

final ActivityResultContract.SynchronousResult<Uri?>?

An optional method you can implement that can be used to potentially provide a result in lieu of starting an activity.

final Uri?
parseResult(resultCode: Int, intent: Intent?)

Convert result obtained from android.app.Activity.onActivityResult to O.

Constants

ACTION_SYSTEM_FALLBACK_PICK_IMAGES

const val ACTION_SYSTEM_FALLBACK_PICK_IMAGESString

In cases where the system framework provided MediaStore.ACTION_PICK_IMAGES Photo Picker cannot be implemented, OEMs or system apps can provide a consistent Photo Picker experience to those devices by creating an Activity that handles this action. This app must also include Intent.CATEGORY_DEFAULT in the activity's intent filter.

Only system apps can implement this action - any non-system apps will be ignored when searching for the activities that handle this Intent.

Note: this should not be used directly, instead relying on the selection logic done by createIntent to create the correct Intent for the current device.

EXTRA_SYSTEM_FALLBACK_PICK_IMAGES_MAX

const val EXTRA_SYSTEM_FALLBACK_PICK_IMAGES_MAXString

Extra that will be sent by PickMultipleVisualMedia to an Activity that handles ACTION_SYSTEM_FALLBACK_PICK_IMAGES that indicates that maximum number of photos the user should select.

If this extra is not present, only a single photo should be selectable.

If this extra is present but equal to Int.MAX_VALUE, then no limit should be enforced.

Public companion functions

isPhotoPickerAvailable

Added in 1.6.0
Deprecated in 1.7.0
fun isPhotoPickerAvailable(): Boolean

Check if the current device has support for the photo picker by checking the running Android version or the SDK extension version.

Note that this does not check for any Intent handled by ACTION_SYSTEM_FALLBACK_PICK_IMAGES.

isPhotoPickerAvailable

Added in 1.7.0
fun isPhotoPickerAvailable(context: Context): Boolean

Check if the current device has support for the photo picker by checking the running Android version, the SDK extension version or the picker provided by a system app implementing ACTION_SYSTEM_FALLBACK_PICK_IMAGES.

Public constructors

PickVisualMedia

Added in 1.6.0
PickVisualMedia()

Public functions

createIntent

Added in 1.6.0
@CallSuper
open fun createIntent(context: Context, input: PickVisualMediaRequest): Intent

Create an intent that can be used for android.app.Activity.startActivityForResult.

getSynchronousResult

Added in 1.6.0
final fun getSynchronousResult(context: Context, input: PickVisualMediaRequest): ActivityResultContract.SynchronousResult<Uri?>?

An optional method you can implement that can be used to potentially provide a result in lieu of starting an activity.

Returns
ActivityResultContract.SynchronousResult<Uri?>?

the result wrapped in a SynchronousResult or null if the call should proceed to start an activity.

parseResult

Added in 1.9.0-alpha03
final fun parseResult(resultCode: Int, intent: Intent?): Uri?

Convert result obtained from android.app.Activity.onActivityResult to O.