diff options
| author | 2024-02-07 21:31:28 -0800 | |
|---|---|---|
| committer | 2024-02-08 11:26:47 -0800 | |
| commit | 9155b17d49ec45bd787b3c45de6324278ebe0928 (patch) | |
| tree | 1c439b29379a3de8c9aa6c649676fb7c440d252e /java/src | |
| parent | 4e51bb841a3801749ad3ad0eef42bfacaf41a9e3 (diff) | |
Add new API arguments to ChooserRequest
Bug: 302691505
Test: atest IntentResolver-tests-unit
Change-Id: I8f7122649f07a56a67df3db513fe73f5870e3eb6
Diffstat (limited to 'java/src')
| -rw-r--r-- | java/src/com/android/intentresolver/v2/ui/model/ChooserRequest.kt | 8 | ||||
| -rw-r--r-- | java/src/com/android/intentresolver/v2/ui/viewmodel/ChooserRequestReader.kt | 23 |
2 files changed, 29 insertions, 2 deletions
diff --git a/java/src/com/android/intentresolver/v2/ui/model/ChooserRequest.kt b/java/src/com/android/intentresolver/v2/ui/model/ChooserRequest.kt index d41d0874..5c785675 100644 --- a/java/src/com/android/intentresolver/v2/ui/model/ChooserRequest.kt +++ b/java/src/com/android/intentresolver/v2/ui/model/ChooserRequest.kt @@ -162,7 +162,13 @@ data class ChooserRequest( * query for matching shortcuts. Specifically, only the [dataTypes][IntentFilter.hasDataType] * are considered for matching share shortcuts currently. */ - val shareTargetFilter: IntentFilter? = null + val shareTargetFilter: IntentFilter? = null, + + /** A URI for additional content */ + val additionalContentUri: Uri? = null, + + /** Focused item index (from target intent's STREAM_EXTRA) */ + val focusedItemPosition: Int = 0, ) { val referrerPackage = referrer?.takeIf { it.scheme == ANDROID_APP_SCHEME }?.authority diff --git a/java/src/com/android/intentresolver/v2/ui/viewmodel/ChooserRequestReader.kt b/java/src/com/android/intentresolver/v2/ui/viewmodel/ChooserRequestReader.kt index 45e2ea64..167c441f 100644 --- a/java/src/com/android/intentresolver/v2/ui/viewmodel/ChooserRequestReader.kt +++ b/java/src/com/android/intentresolver/v2/ui/viewmodel/ChooserRequestReader.kt @@ -36,9 +36,11 @@ import android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK import android.content.Intent.FLAG_ACTIVITY_NEW_DOCUMENT import android.content.IntentFilter import android.content.IntentSender +import android.net.Uri import android.os.Bundle import android.service.chooser.ChooserAction import android.service.chooser.ChooserTarget +import android.service.chooser.Flags import com.android.intentresolver.ChooserActivity import com.android.intentresolver.R import com.android.intentresolver.util.hasValidIcon @@ -55,6 +57,13 @@ import com.android.intentresolver.v2.validation.validateFrom private const val MAX_CHOOSER_ACTIONS = 5 private const val MAX_INITIAL_INTENTS = 2 +// TODO: replace with the new API constant, Intent#EXTRA_CHOOSER_ADDITIONAL_CONTENT_URI +private const val EXTRA_CHOOSER_ADDITIONAL_CONTENT_URI = + "android.intent.extra.CHOOSER_ADDITIONAL_CONTENT_URI" +// TODO: replace with the new API constant, Intent#EXTRA_CHOOSER_FOCUSED_ITEM_POSITION +private const val EXTRA_CHOOSER_FOCUSED_ITEM_POSITION = + "android.intent.extra.CHOOSER_FOCUSED_ITEM_POSITION" + private fun Intent.hasSendAction() = hasAction(ACTION_SEND, ACTION_SEND_MULTIPLE) internal fun Intent.maybeAddSendActionFlags() = @@ -124,6 +133,16 @@ fun readChooserRequest(launch: ActivityLaunch): ValidationResult<ChooserRequest> val referrerFillIn = Intent().putExtra(EXTRA_REFERRER, launch.referrer) + val additionalContentUri: Uri? + val focusedItemPos: Int + if (isSendAction && Flags.chooserPayloadToggling()) { + additionalContentUri = optional(value<Uri>(EXTRA_CHOOSER_ADDITIONAL_CONTENT_URI)) + focusedItemPos = optional(value<Int>(EXTRA_CHOOSER_FOCUSED_ITEM_POSITION)) ?: 0 + } else { + additionalContentUri = null + focusedItemPos = 0 + } + ChooserRequest( targetIntent = targetIntent, targetAction = targetIntent.action, @@ -147,7 +166,9 @@ fun readChooserRequest(launch: ActivityLaunch): ValidationResult<ChooserRequest> chosenComponentSender = chosenComponentSender, refinementIntentSender = refinementIntentSender, sharedText = sharedText, - shareTargetFilter = targetIntent.toShareTargetFilter() + shareTargetFilter = targetIntent.toShareTargetFilter(), + additionalContentUri = additionalContentUri, + focusedItemPosition = focusedItemPos, ) } } |