Add a builder for PhotoPicker contract
Adding the PickViewMediaRequest and builder for adding different inputs
to the PickVisualMedia ActivityResultContracts.
RelNote: N/A
Test: modified integration app
Bug: 220187418
Change-Id: I940352b2ebe0c8fe14da759082f15ac9e488cbe5
diff --git a/activity/activity/api/current.txt b/activity/activity/api/current.txt
index cd387b5..176077e 100644
--- a/activity/activity/api/current.txt
+++ b/activity/activity/api/current.txt
@@ -164,6 +164,21 @@
method public androidx.activity.result.IntentSenderRequest.Builder setFlags(int, int);
}
+ public final class PickVisualMediaRequest {
+ method public androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType getMediaType();
+ property public final androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType mediaType;
+ }
+
+ public static final class PickVisualMediaRequest.Builder {
+ ctor public PickVisualMediaRequest.Builder();
+ method public androidx.activity.result.PickVisualMediaRequest build();
+ method public androidx.activity.result.PickVisualMediaRequest.Builder setMediaType(androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType mediaType);
+ }
+
+ public final class PickVisualMediaRequestKt {
+ method public static androidx.activity.result.PickVisualMediaRequest PickVisualMediaRequest(optional androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType mediaType);
+ }
+
}
package androidx.activity.result.contract {
@@ -240,17 +255,17 @@
method public android.net.Uri? parseResult(int resultCode, android.content.Intent? intent);
}
- @RequiresApi(19) public static class ActivityResultContracts.PickMultipleVisualMedia extends androidx.activity.result.contract.ActivityResultContract<androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType,java.util.List<android.net.Uri>> {
+ @RequiresApi(19) public static class ActivityResultContracts.PickMultipleVisualMedia extends androidx.activity.result.contract.ActivityResultContract<androidx.activity.result.PickVisualMediaRequest,java.util.List<android.net.Uri>> {
ctor public ActivityResultContracts.PickMultipleVisualMedia(optional int maxItems);
- method @CallSuper public android.content.Intent createIntent(android.content.Context context, androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType input);
- method public final androidx.activity.result.contract.ActivityResultContract.SynchronousResult<java.util.List<android.net.Uri>>? getSynchronousResult(android.content.Context context, androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType input);
+ method @CallSuper public android.content.Intent createIntent(android.content.Context context, androidx.activity.result.PickVisualMediaRequest input);
+ method public final androidx.activity.result.contract.ActivityResultContract.SynchronousResult<java.util.List<android.net.Uri>>? getSynchronousResult(android.content.Context context, androidx.activity.result.PickVisualMediaRequest input);
method public final java.util.List<android.net.Uri> parseResult(int resultCode, android.content.Intent? intent);
}
- public static class ActivityResultContracts.PickVisualMedia extends androidx.activity.result.contract.ActivityResultContract<androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType,android.net.Uri> {
+ public static class ActivityResultContracts.PickVisualMedia extends androidx.activity.result.contract.ActivityResultContract<androidx.activity.result.PickVisualMediaRequest,android.net.Uri> {
ctor public ActivityResultContracts.PickVisualMedia();
- method @CallSuper public android.content.Intent createIntent(android.content.Context context, androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType input);
- method public final androidx.activity.result.contract.ActivityResultContract.SynchronousResult<android.net.Uri>? getSynchronousResult(android.content.Context context, androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType input);
+ method @CallSuper public android.content.Intent createIntent(android.content.Context context, androidx.activity.result.PickVisualMediaRequest input);
+ method public final androidx.activity.result.contract.ActivityResultContract.SynchronousResult<android.net.Uri>? getSynchronousResult(android.content.Context context, androidx.activity.result.PickVisualMediaRequest input);
method public static final String? getVisualMimeType(androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType input);
method public static final boolean isPhotoPickerAvailable();
method public final android.net.Uri? parseResult(int resultCode, android.content.Intent? intent);
diff --git a/activity/activity/api/public_plus_experimental_current.txt b/activity/activity/api/public_plus_experimental_current.txt
index cd387b5..176077e 100644
--- a/activity/activity/api/public_plus_experimental_current.txt
+++ b/activity/activity/api/public_plus_experimental_current.txt
@@ -164,6 +164,21 @@
method public androidx.activity.result.IntentSenderRequest.Builder setFlags(int, int);
}
+ public final class PickVisualMediaRequest {
+ method public androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType getMediaType();
+ property public final androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType mediaType;
+ }
+
+ public static final class PickVisualMediaRequest.Builder {
+ ctor public PickVisualMediaRequest.Builder();
+ method public androidx.activity.result.PickVisualMediaRequest build();
+ method public androidx.activity.result.PickVisualMediaRequest.Builder setMediaType(androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType mediaType);
+ }
+
+ public final class PickVisualMediaRequestKt {
+ method public static androidx.activity.result.PickVisualMediaRequest PickVisualMediaRequest(optional androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType mediaType);
+ }
+
}
package androidx.activity.result.contract {
@@ -240,17 +255,17 @@
method public android.net.Uri? parseResult(int resultCode, android.content.Intent? intent);
}
- @RequiresApi(19) public static class ActivityResultContracts.PickMultipleVisualMedia extends androidx.activity.result.contract.ActivityResultContract<androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType,java.util.List<android.net.Uri>> {
+ @RequiresApi(19) public static class ActivityResultContracts.PickMultipleVisualMedia extends androidx.activity.result.contract.ActivityResultContract<androidx.activity.result.PickVisualMediaRequest,java.util.List<android.net.Uri>> {
ctor public ActivityResultContracts.PickMultipleVisualMedia(optional int maxItems);
- method @CallSuper public android.content.Intent createIntent(android.content.Context context, androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType input);
- method public final androidx.activity.result.contract.ActivityResultContract.SynchronousResult<java.util.List<android.net.Uri>>? getSynchronousResult(android.content.Context context, androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType input);
+ method @CallSuper public android.content.Intent createIntent(android.content.Context context, androidx.activity.result.PickVisualMediaRequest input);
+ method public final androidx.activity.result.contract.ActivityResultContract.SynchronousResult<java.util.List<android.net.Uri>>? getSynchronousResult(android.content.Context context, androidx.activity.result.PickVisualMediaRequest input);
method public final java.util.List<android.net.Uri> parseResult(int resultCode, android.content.Intent? intent);
}
- public static class ActivityResultContracts.PickVisualMedia extends androidx.activity.result.contract.ActivityResultContract<androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType,android.net.Uri> {
+ public static class ActivityResultContracts.PickVisualMedia extends androidx.activity.result.contract.ActivityResultContract<androidx.activity.result.PickVisualMediaRequest,android.net.Uri> {
ctor public ActivityResultContracts.PickVisualMedia();
- method @CallSuper public android.content.Intent createIntent(android.content.Context context, androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType input);
- method public final androidx.activity.result.contract.ActivityResultContract.SynchronousResult<android.net.Uri>? getSynchronousResult(android.content.Context context, androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType input);
+ method @CallSuper public android.content.Intent createIntent(android.content.Context context, androidx.activity.result.PickVisualMediaRequest input);
+ method public final androidx.activity.result.contract.ActivityResultContract.SynchronousResult<android.net.Uri>? getSynchronousResult(android.content.Context context, androidx.activity.result.PickVisualMediaRequest input);
method public static final String? getVisualMimeType(androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType input);
method public static final boolean isPhotoPickerAvailable();
method public final android.net.Uri? parseResult(int resultCode, android.content.Intent? intent);
diff --git a/activity/activity/api/restricted_current.txt b/activity/activity/api/restricted_current.txt
index f4af520..0a8d8b9 100644
--- a/activity/activity/api/restricted_current.txt
+++ b/activity/activity/api/restricted_current.txt
@@ -163,6 +163,21 @@
method public androidx.activity.result.IntentSenderRequest.Builder setFlags(int, int);
}
+ public final class PickVisualMediaRequest {
+ method public androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType getMediaType();
+ property public final androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType mediaType;
+ }
+
+ public static final class PickVisualMediaRequest.Builder {
+ ctor public PickVisualMediaRequest.Builder();
+ method public androidx.activity.result.PickVisualMediaRequest build();
+ method public androidx.activity.result.PickVisualMediaRequest.Builder setMediaType(androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType mediaType);
+ }
+
+ public final class PickVisualMediaRequestKt {
+ method public static androidx.activity.result.PickVisualMediaRequest PickVisualMediaRequest(optional androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType mediaType);
+ }
+
}
package androidx.activity.result.contract {
@@ -239,17 +254,17 @@
method public android.net.Uri? parseResult(int resultCode, android.content.Intent? intent);
}
- @RequiresApi(19) public static class ActivityResultContracts.PickMultipleVisualMedia extends androidx.activity.result.contract.ActivityResultContract<androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType,java.util.List<android.net.Uri>> {
+ @RequiresApi(19) public static class ActivityResultContracts.PickMultipleVisualMedia extends androidx.activity.result.contract.ActivityResultContract<androidx.activity.result.PickVisualMediaRequest,java.util.List<android.net.Uri>> {
ctor public ActivityResultContracts.PickMultipleVisualMedia(optional int maxItems);
- method @CallSuper public android.content.Intent createIntent(android.content.Context context, androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType input);
- method public final androidx.activity.result.contract.ActivityResultContract.SynchronousResult<java.util.List<android.net.Uri>>? getSynchronousResult(android.content.Context context, androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType input);
+ method @CallSuper public android.content.Intent createIntent(android.content.Context context, androidx.activity.result.PickVisualMediaRequest input);
+ method public final androidx.activity.result.contract.ActivityResultContract.SynchronousResult<java.util.List<android.net.Uri>>? getSynchronousResult(android.content.Context context, androidx.activity.result.PickVisualMediaRequest input);
method public final java.util.List<android.net.Uri> parseResult(int resultCode, android.content.Intent? intent);
}
- public static class ActivityResultContracts.PickVisualMedia extends androidx.activity.result.contract.ActivityResultContract<androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType,android.net.Uri> {
+ public static class ActivityResultContracts.PickVisualMedia extends androidx.activity.result.contract.ActivityResultContract<androidx.activity.result.PickVisualMediaRequest,android.net.Uri> {
ctor public ActivityResultContracts.PickVisualMedia();
- method @CallSuper public android.content.Intent createIntent(android.content.Context context, androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType input);
- method public final androidx.activity.result.contract.ActivityResultContract.SynchronousResult<android.net.Uri>? getSynchronousResult(android.content.Context context, androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType input);
+ method @CallSuper public android.content.Intent createIntent(android.content.Context context, androidx.activity.result.PickVisualMediaRequest input);
+ method public final androidx.activity.result.contract.ActivityResultContract.SynchronousResult<android.net.Uri>? getSynchronousResult(android.content.Context context, androidx.activity.result.PickVisualMediaRequest input);
method public static final String? getVisualMimeType(androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType input);
method public static final boolean isPhotoPickerAvailable();
method public final android.net.Uri? parseResult(int resultCode, android.content.Intent? intent);
diff --git a/activity/activity/src/main/java/androidx/activity/result/PickVisualMediaRequest.kt b/activity/activity/src/main/java/androidx/activity/result/PickVisualMediaRequest.kt
new file mode 100644
index 0000000..f9b3bee
--- /dev/null
+++ b/activity/activity/src/main/java/androidx/activity/result/PickVisualMediaRequest.kt
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.activity.result
+
+import androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType
+import androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.ImageAndVideo
+
+/**
+ * Creates a request for a
+ * [androidx.activity.result.contract.ActivityResultContracts.PickMultipleVisualMedia] or
+ * [androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia] Activity Contract.
+ *
+ * @param mediaType type to go into the PickVisualMediaRequest
+ *
+ * @return a PickVisualMediaRequest that contains the given input
+ */
+fun PickVisualMediaRequest(
+ mediaType: VisualMediaType = ImageAndVideo
+) = PickVisualMediaRequest.Builder().setMediaType(mediaType).build()
+
+/**
+ * A request for a
+ * [androidx.activity.result.contract.ActivityResultContracts.PickMultipleVisualMedia] or
+ * [androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia] Activity Contract.
+ */
+class PickVisualMediaRequest internal constructor() {
+
+ var mediaType: VisualMediaType = ImageAndVideo
+ private set
+
+ /**
+ * A builder for constructing [PickVisualMediaRequest] instances.
+ */
+ class Builder {
+
+ private var mediaType: VisualMediaType = ImageAndVideo
+
+ /**
+ * Set the media type for the [PickVisualMediaRequest].
+ *
+ * The type is the mime type to filter by, e.g. `PickVisualMedia.ImageOnly`,
+ * `PickVisualMedia.ImageAndVideo`, `PickVisualMedia.SingleMimeType("image/gif")`
+ *
+ * @param mediaType type to go into the PickVisualMediaRequest
+ * @return This builder.
+ */
+ fun setMediaType(mediaType: VisualMediaType): Builder {
+ this.mediaType = mediaType
+ return this
+ }
+
+ /**
+ * Build the PickVisualMediaRequest specified by this builder.
+ *
+ * @return the newly constructed PickVisualMediaRequest.
+ */
+ fun build(): PickVisualMediaRequest = PickVisualMediaRequest(mediaType).apply {
+ this.mediaType = mediaType
+ }
+ }
+}
diff --git a/activity/activity/src/main/java/androidx/activity/result/contract/ActivityResultContracts.kt b/activity/activity/src/main/java/androidx/activity/result/contract/ActivityResultContracts.kt
index 52d69d3..134136d 100644
--- a/activity/activity/src/main/java/androidx/activity/result/contract/ActivityResultContracts.kt
+++ b/activity/activity/src/main/java/androidx/activity/result/contract/ActivityResultContracts.kt
@@ -28,6 +28,7 @@
import android.provider.MediaStore
import androidx.activity.result.ActivityResult
import androidx.activity.result.IntentSenderRequest
+import androidx.activity.result.PickVisualMediaRequest
import androidx.activity.result.contract.ActivityResultContracts.GetMultipleContents.Companion.getClipDataUris
import androidx.activity.result.contract.ActivityResultContracts.StartIntentSenderForResult.Companion.ACTION_INTENT_SENDER_REQUEST
import androidx.activity.result.contract.ActivityResultContracts.StartIntentSenderForResult.Companion.EXTRA_SEND_INTENT_EXCEPTION
@@ -603,8 +604,7 @@
* An [ActivityResultContract] to use the photo picker through [MediaStore.ACTION_PICK_IMAGES]
* when available, and else rely on ACTION_OPEN_DOCUMENT.
*
- * The input is the mime type to filter by, e.g. `PickVisualMedia.ImageOnly`,
- * `PickVisualMedia.ImageAndVideo`, `PickVisualMedia.SingleMimeType("image/gif")`.
+ * 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.
@@ -612,7 +612,7 @@
* This can be extended to override [createIntent] if you wish to pass additional
* extras to the Intent created by `super.createIntent()`.
*/
- open class PickVisualMedia : ActivityResultContract<PickVisualMedia.VisualMediaType, Uri?>() {
+ open class PickVisualMedia : ActivityResultContract<PickVisualMediaRequest, Uri?>() {
companion object {
@JvmStatic
fun isPhotoPickerAvailable(): Boolean {
@@ -638,18 +638,18 @@
class SingleMimeType(val mimeType: String) : VisualMediaType
@CallSuper
- override fun createIntent(context: Context, input: VisualMediaType): Intent {
+ override fun createIntent(context: Context, input: PickVisualMediaRequest): Intent {
// Check if Photo Picker is available on the device
return if (isPhotoPickerAvailable()) {
Intent(MediaStore.ACTION_PICK_IMAGES).apply {
- type = getVisualMimeType(input)
+ type = getVisualMimeType(input.mediaType)
}
} else {
// For older devices running KitKat and higher and devices running Android 12
// and 13 without the SDK extension that includes the Photo Picker, rely on the
// ACTION_OPEN_DOCUMENT intent
Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
- type = getVisualMimeType(input)
+ type = getVisualMimeType(input.mediaType)
if (type == null) {
// ACTION_OPEN_DOCUMENT requires to set this parameter when launching the
@@ -663,7 +663,7 @@
final override fun getSynchronousResult(
context: Context,
- input: VisualMediaType
+ input: PickVisualMediaRequest
): SynchronousResult<Uri?>? = null
final override fun parseResult(resultCode: Int, intent: Intent?): Uri? {
@@ -679,8 +679,7 @@
* using the photo picker to return. Keep in mind that this parameter isn't supported on devices
* when the photo picker isn't available.
*
- * The input is the mime type to filter by, e.g. `PickVisualMedia.ImageOnly`,
- * `PickVisualMedia.ImageAndVideo`, `PickVisualMedia.SingleMimeType("image/gif")`.
+ * The input is a [PickVisualMediaRequest].
*
* The output is a list `Uri` of the selected media. It can be empty if the user hasn't selected
* any items. Keep in mind that `Uri` returned by the photo picker aren't writable.
@@ -691,7 +690,7 @@
@RequiresApi(19)
open class PickMultipleVisualMedia(
private val maxItems: Int = getMaxItems()
- ) : ActivityResultContract<PickVisualMedia.VisualMediaType, List<@JvmSuppressWildcards Uri>>() {
+ ) : ActivityResultContract<PickVisualMediaRequest, List<@JvmSuppressWildcards Uri>>() {
init {
require(maxItems > 1) {
@@ -700,14 +699,11 @@
}
@CallSuper
- override fun createIntent(
- context: Context,
- input: PickVisualMedia.VisualMediaType
- ): Intent {
+ override fun createIntent(context: Context, input: PickVisualMediaRequest): Intent {
// Check to see if the photo picker is available
return if (PickVisualMedia.isPhotoPickerAvailable()) {
Intent(MediaStore.ACTION_PICK_IMAGES).apply {
- type = PickVisualMedia.getVisualMimeType(input)
+ type = PickVisualMedia.getVisualMimeType(input.mediaType)
require(maxItems <= MediaStore.getPickImagesMaxLimit()) {
"Max items must be less or equals MediaStore.getPickImagesMaxLimit()"
@@ -720,7 +716,7 @@
// and 13 without the SDK extension that includes the Photo Picker, rely on the
// ACTION_OPEN_DOCUMENT intent
Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
- type = PickVisualMedia.getVisualMimeType(input)
+ type = PickVisualMedia.getVisualMimeType(input.mediaType)
putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
if (type == null) {
@@ -735,7 +731,7 @@
final override fun getSynchronousResult(
context: Context,
- input: PickVisualMedia.VisualMediaType
+ input: PickVisualMediaRequest
): SynchronousResult<List<@JvmSuppressWildcards Uri>>? = null
final override fun parseResult(resultCode: Int, intent: Intent?): List<Uri> {
diff --git a/activity/integration-tests/testapp/src/main/java/androidx/activity/integration/testapp/MainActivity.kt b/activity/integration-tests/testapp/src/main/java/androidx/activity/integration/testapp/MainActivity.kt
index a68119b..947be53 100644
--- a/activity/integration-tests/testapp/src/main/java/androidx/activity/integration/testapp/MainActivity.kt
+++ b/activity/integration-tests/testapp/src/main/java/androidx/activity/integration/testapp/MainActivity.kt
@@ -36,6 +36,7 @@
import androidx.activity.ComponentActivity
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.IntentSenderRequest
+import androidx.activity.result.PickVisualMediaRequest
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.result.contract.ActivityResultContracts.CaptureVideo
import androidx.activity.result.contract.ActivityResultContracts.CreateDocument
@@ -46,7 +47,6 @@
import androidx.activity.result.contract.ActivityResultContracts.RequestPermission
import androidx.activity.result.contract.ActivityResultContracts.TakePicture
import androidx.activity.result.contract.ActivityResultContracts.TakePicturePreview
-import androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.VisualMediaType
import androidx.activity.result.launch
import androidx.activity.result.registerForActivityResult
import androidx.core.content.FileProvider
@@ -80,9 +80,9 @@
toast("Got image: $uri")
}
- lateinit var pickVisualMedia: ActivityResultLauncher<VisualMediaType>
+ lateinit var pickVisualMedia: ActivityResultLauncher<PickVisualMediaRequest>
- lateinit var pickMultipleVisualMedia: ActivityResultLauncher<VisualMediaType>
+ lateinit var pickMultipleVisualMedia: ActivityResultLauncher<PickVisualMediaRequest>
lateinit var createDocument: ActivityResultLauncher<String>
@@ -147,13 +147,19 @@
}
if (android.os.Build.VERSION.SDK_INT >= 19) {
button("Pick an image (w/ photo picker)") {
- pickVisualMedia.launch(PickVisualMedia.ImageOnly)
+ pickVisualMedia.launch(
+ PickVisualMediaRequest(PickVisualMedia.ImageOnly)
+ )
}
button("Pick a GIF (w/ photo picker)") {
- pickVisualMedia.launch(PickVisualMedia.SingleMimeType("image/gif"))
+ pickVisualMedia.launch(
+ PickVisualMediaRequest(PickVisualMedia.SingleMimeType("image/gif"))
+ )
}
button("Pick 5 visual media max (w/ photo picker)") {
- pickMultipleVisualMedia.launch(PickVisualMedia.ImageAndVideo)
+ pickMultipleVisualMedia.launch(
+ PickVisualMediaRequest(PickVisualMedia.ImageAndVideo)
+ )
}
button("Create document") {
createDocument.launch("Temp")