RemoteInput
class RemoteInput : Parcelable
kotlin.Any | |
↳ | android.app.RemoteInput |
A RemoteInput
object specifies input to be collected from a user to be passed along with an intent inside a android.app.PendingIntent
that is sent. Always use RemoteInput.Builder
to create instances of this class.
See Replying to notifications for more information on how to use this class.
The following example adds a RemoteInput
to a Notification.Action
, sets the result key as quick_reply
, and sets the label as Quick reply
. Users are prompted to input a response when they trigger the action. The results are sent along with the intent and can be retrieved with the result key (provided to the Builder
constructor) from the Bundle returned by getResultsFromIntent
.
public static final String KEY_QUICK_REPLY_TEXT = "quick_reply"; Notification.Action action = new Notification.Action.Builder( R.drawable.reply, "Reply", actionIntent) <b>.addRemoteInput(new RemoteInput.Builder(KEY_QUICK_REPLY_TEXT) .setLabel("Quick reply").build()</b>) .build();
When the android.app.PendingIntent
is fired, the intent inside will contain the input results if collected. To access these results, use the getResultsFromIntent
function. The result values will present under the result key passed to the Builder
constructor.
public static final String KEY_QUICK_REPLY_TEXT = "quick_reply"; Bundle results = RemoteInput.getResultsFromIntent(intent); if (results != null) { CharSequence quickReplyResult = results.getCharSequence(KEY_QUICK_REPLY_TEXT); }
Summary
Nested classes | |
---|---|
Builder class for |
Constants | |
---|---|
static Int |
The platform will determine whether choices will be edited before being sent to the app. |
static Int |
Tapping on a choice should send the input immediately, without letting the user edit it. |
static Int |
Tapping on a choice should let the user edit the input before it is sent to the app. |
static String |
Extra added to a clip data intent object to hold the text results bundle. |
static String |
Label used to denote the clip data type used for remote input transport |
static Int |
The user selected one of the choices from |
static Int |
The user manually entered the data. |
Inherited constants | |
---|---|
Public methods | |
---|---|
static Unit |
addDataResultToIntent(remoteInput: RemoteInput!, intent: Intent!, results: MutableMap<String!, Uri!>!) Same as |
static Unit |
addResultsToIntent(remoteInputs: Array<RemoteInput!>!, intent: Intent!, results: Bundle!) Populate an intent object with the text results gathered from remote input. |
Int | |
Boolean |
Get whether or not users can provide an arbitrary value for input. |
MutableSet<String!>! |
Get possible non-textual inputs that are accepted. |
Array<CharSequence!>! |
Get possible input choices. |
static MutableMap<String!, Uri!>! |
getDataResultsFromIntent(intent: Intent!, remoteInputResultKey: String!) Similar as |
Int |
Gets whether tapping on a choice should let the user edit the input before it is sent to the app. |
Bundle! |
Get additional metadata carried around with this remote input. |
CharSequence! |
getLabel() Get the label to display to users when collecting this input. |
String! |
Get the key that the result of this input will be set in from the Bundle returned by |
static Bundle! |
getResultsFromIntent(intent: Intent!) Get the remote input text results bundle from an intent. |
static Int |
getResultsSource(intent: Intent!) Get the source of the RemoteInput results. |
Boolean |
Returns true if the input only accepts data, meaning |
static Unit |
setResultsSource(intent: Intent!, source: Int) Set the source of the RemoteInput results. |
Unit |
writeToParcel(out: Parcel, flags: Int) |
Properties | |
---|---|
static Parcelable.Creator<RemoteInput!> |
Constants
EDIT_CHOICES_BEFORE_SENDING_AUTO
static val EDIT_CHOICES_BEFORE_SENDING_AUTO: Int
The platform will determine whether choices will be edited before being sent to the app.
Value: 0
EDIT_CHOICES_BEFORE_SENDING_DISABLED
static val EDIT_CHOICES_BEFORE_SENDING_DISABLED: Int
Tapping on a choice should send the input immediately, without letting the user edit it.
Value: 1
EDIT_CHOICES_BEFORE_SENDING_ENABLED
static val EDIT_CHOICES_BEFORE_SENDING_ENABLED: Int
Tapping on a choice should let the user edit the input before it is sent to the app.
Value: 2
EXTRA_RESULTS_DATA
static val EXTRA_RESULTS_DATA: String
Extra added to a clip data intent object to hold the text results bundle.
Value: "android.remoteinput.resultsData"
RESULTS_CLIP_LABEL
static val RESULTS_CLIP_LABEL: String
Label used to denote the clip data type used for remote input transport
Value: "android.remoteinput.results"
SOURCE_CHOICE
static val SOURCE_CHOICE: Int
The user selected one of the choices from getChoices
.
Value: 1
SOURCE_FREE_FORM_INPUT
static val SOURCE_FREE_FORM_INPUT: Int
The user manually entered the data.
Value: 0
Public methods
addDataResultToIntent
static fun addDataResultToIntent(
remoteInput: RemoteInput!,
intent: Intent!,
results: MutableMap<String!, Uri!>!
): Unit
Same as addResultsToIntent
but for setting data results. This is used for inputs that accept non-textual results (see Builder#setAllowDataType
). Only one result can be provided for every mime type accepted by the RemoteInput. If multiple inputs of the same mime type are expected then multiple RemoteInputs should be used.
Parameters | |
---|---|
remoteInput |
RemoteInput!: The remote input for which results are being provided |
intent |
Intent!: The intent to add remote input results to. The ClipData field of the intent will be modified to contain the results. |
results |
MutableMap<String!, Uri!>!: A map of mime type to the Uri result for that mime type. |
addResultsToIntent
static fun addResultsToIntent(
remoteInputs: Array<RemoteInput!>!,
intent: Intent!,
results: Bundle!
): Unit
Populate an intent object with the text results gathered from remote input. This method should only be called by remote input collection services when sending results to a pending intent.
Parameters | |
---|---|
remoteInputs |
Array<RemoteInput!>!: The remote inputs for which results are being provided |
intent |
Intent!: The intent to add remote inputs to. The ClipData field of the intent will be modified to contain the results. |
results |
Bundle!: A bundle holding the remote input results. This bundle should be populated with keys matching the result keys specified in remoteInputs with values being the CharSequence results per key. |
describeContents
fun describeContents(): Int
Return | |
---|---|
Int |
a bitmask indicating the set of special object types marshaled by this Parcelable object instance. Value is either 0 or android.os.Parcelable#CONTENTS_FILE_DESCRIPTOR |
getAllowFreeFormInput
fun getAllowFreeFormInput(): Boolean
Get whether or not users can provide an arbitrary value for input. If you set this to false
, users must select one of the choices in getChoices
. An IllegalArgumentException
is thrown if you set this to false and getChoices
returns null
or empty.
getAllowedDataTypes
fun getAllowedDataTypes(): MutableSet<String!>!
Get possible non-textual inputs that are accepted. This can be null
if the input does not accept non-textual values. See Builder#setAllowDataType
.
getChoices
fun getChoices(): Array<CharSequence!>!
Get possible input choices. This can be null
if there are no choices to present.
getDataResultsFromIntent
static fun getDataResultsFromIntent(
intent: Intent!,
remoteInputResultKey: String!
): MutableMap<String!, Uri!>!
Similar as getResultsFromIntent
but retrieves data results for a specific RemoteInput result. To retrieve a value use:
<code>Map<String, Uri> results = RemoteInput.getDataResultsFromIntent(intent, REMOTE_INPUT_KEY); if (results != null) { Uri data = results.get(MIME_TYPE_OF_INTEREST); } </code>
Parameters | |
---|---|
intent |
Intent!: The intent object that fired in response to an action or content intent which also had one or more remote input requested. |
remoteInputResultKey |
String!: The result key for the RemoteInput you want results for. |
getEditChoicesBeforeSending
fun getEditChoicesBeforeSending(): Int
Gets whether tapping on a choice should let the user edit the input before it is sent to the app.
getExtras
fun getExtras(): Bundle!
Get additional metadata carried around with this remote input.
getLabel
fun getLabel(): CharSequence!
Get the label to display to users when collecting this input.
getResultKey
fun getResultKey(): String!
Get the key that the result of this input will be set in from the Bundle returned by getResultsFromIntent
when the android.app.PendingIntent
is sent.
getResultsFromIntent
static fun getResultsFromIntent(intent: Intent!): Bundle!
Get the remote input text results bundle from an intent. The returned Bundle will contain a key/value for every result key populated with text by remote input collector. Use the Bundle#getCharSequence(String)
method to retrieve a value. For non-text results use getDataResultsFromIntent
.
Parameters | |
---|---|
intent |
Intent!: The intent object that fired in response to an action or content intent which also had one or more remote input requested. |
getResultsSource
static fun getResultsSource(intent: Intent!): Int
Get the source of the RemoteInput results.
Parameters | |
---|---|
intent |
Intent!: The intent object that fired in response to an action or content intent which also had one or more remote input requested. |
Return | |
---|---|
Int |
The source of the results. If no source was set, SOURCE_FREE_FORM_INPUT will be returned. Value is android.app.RemoteInput#SOURCE_FREE_FORM_INPUT , or android.app.RemoteInput#SOURCE_CHOICE |
See Also
isDataOnly
fun isDataOnly(): Boolean
Returns true if the input only accepts data, meaning getAllowFreeFormInput
is false, getChoices
is null or empty, and getAllowedDataTypes
is non-null and not empty.
setResultsSource
static fun setResultsSource(
intent: Intent!,
source: Int
): Unit
Set the source of the RemoteInput results. This method should only be called by remote input collection services (e.g. android.service.notification.NotificationListenerService
) when sending results to a pending intent.
Parameters | |
---|---|
intent |
Intent!: The intent to add remote input source to. The ClipData field of the intent will be modified to contain the source. |
source |
Int: The source of the results. Value is android.app.RemoteInput#SOURCE_FREE_FORM_INPUT , or android.app.RemoteInput#SOURCE_CHOICE |
See Also
writeToParcel
fun writeToParcel(
out: Parcel,
flags: Int
): Unit
Parameters | |
---|---|
dest |
The Parcel in which the object should be written. This value cannot be null . |
flags |
Int: Additional flags about how the object should be written. May be 0 or PARCELABLE_WRITE_RETURN_VALUE . Value is either 0 or a combination of android.os.Parcelable#PARCELABLE_WRITE_RETURN_VALUE , and android.os.Parcelable.PARCELABLE_ELIDE_DUPLICATES |