# RemoteInput.Builder

Artifact: [androidx.core:core](https://developer.android.com/jetpack/androidx/releases/core) [View Source](https://cs.android.com/search?q=file:androidx/core/app/RemoteInput.java+class:androidx.core.app.RemoteInput.Builder) Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0)

*** ** * ** ***


```
public final class RemoteInput.Builder
```

<br />

*** ** * ** ***

Builder class for `https://developer.android.com/reference/androidx/core/app/RemoteInput` objects.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder#Builder(java.lang.String)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html resultKey)` Create a builder object for `https://developer.android.com/reference/androidx/core/app/RemoteInput` objects. |

| ### Public methods |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder` | `https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder#addExtras(android.os.Bundle)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/os/Bundle.html extras)` Merge additional metadata into this builder. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/core/app/RemoteInput` | `https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder#build()()` Combine all of the options that have been set and return a new `https://developer.android.com/reference/androidx/core/app/RemoteInput` object. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/os/Bundle.html` | `https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder#getExtras()()` Get the metadata Bundle used by this Builder. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder` | `https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder#setAllowDataType(java.lang.String,boolean)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html mimeType, boolean doAllow)` Specifies whether the user can provide arbitrary values. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder` | `https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder#setAllowFreeFormInput(boolean)(boolean allowFreeFormTextInput)` Specifies whether the user can provide arbitrary text values. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder` | `https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder#setChoices(java.lang.CharSequence[])(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html CharSequence[] choices)` Specifies choices available to the user to satisfy this input. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder` | `https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder#setEditChoicesBeforeSending(int)(int editChoicesBeforeSending)` Specifies whether tapping on a choice should let the user edit the input before it is sent to the app. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder` | `https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder#setLabel(java.lang.CharSequence)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/CharSequence.html label)` Set a label to be displayed to the user when collecting this input. |

## Public constructors

### Builder

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0)

```
public Builder(@NonNull String resultKey)
```

Create a builder object for `https://developer.android.com/reference/androidx/core/app/RemoteInput` objects.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html resultKey` | the Bundle key that refers to this input when collected from the user |

## Public methods

### addExtras

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0)

```
public @NonNull RemoteInput.Builder addExtras(@NonNull Bundle extras)
```

Merge additional metadata into this builder.

Values within the Bundle will replace existing extras values in this Builder.

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/core/app/RemoteInput#getExtras()` |   |

### build

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0)

```
public @NonNull RemoteInput build()
```

Combine all of the options that have been set and return a new `https://developer.android.com/reference/androidx/core/app/RemoteInput` object.

### getExtras

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0)

```
public @NonNull Bundle getExtras()
```

Get the metadata Bundle used by this Builder.

The returned Bundle is shared with this Builder.

### setAllowDataType

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0)

```
public @NonNull RemoteInput.Builder setAllowDataType(@NonNull String mimeType, boolean doAllow)
```

Specifies whether the user can provide arbitrary values.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html mimeType` | A mime type that results are allowed to come in. Be aware that text results (see `https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder#setAllowFreeFormInput(boolean)` are allowed by default. If you do not want text results you will have to pass false to `setAllowFreeFormInput` |
| `boolean doAllow` | Whether the mime type should be allowed or not |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder` | this object for method chaining |

### setAllowFreeFormInput

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0)

```
public @NonNull RemoteInput.Builder setAllowFreeFormInput(boolean allowFreeFormTextInput)
```

Specifies whether the user can provide arbitrary text values.

| Parameters |
|---|---|
| `boolean allowFreeFormTextInput` | The default is `true`. If you specify `false`, you must either provide a non-null and non-empty array to `https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder#setChoices(java.lang.CharSequence[])`, or enable a data result in `setAllowDataType`. Otherwise an `https://developer.android.com/reference/java/lang/IllegalArgumentException.html` is thrown |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder` | this object for method chaining |

### setChoices

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0)

```
public @NonNull RemoteInput.Builder setChoices(@Nullable CharSequence[] choices)
```

Specifies choices available to the user to satisfy this input.

Note: Starting in Android P, these choices will always be shown on phones if the app's target SDK is \>= P. However, these choices may also be rendered on other types of devices regardless of target SDK.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html CharSequence[] choices` | an array of pre-defined choices for users input. You must provide a non-null and non-empty array if you disabled free form input using `https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder#setAllowFreeFormInput(boolean)` |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder` | this object for method chaining |

### setEditChoicesBeforeSending

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/core#1.2.0)

```
public @NonNull RemoteInput.Builder setEditChoicesBeforeSending(int editChoicesBeforeSending)
```

Specifies whether tapping on a choice should let the user edit the input before it is sent to the app. The default is `https://developer.android.com/reference/androidx/core/app/RemoteInput#EDIT_CHOICES_BEFORE_SENDING_AUTO()`. It cannot be used if `https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder#setAllowFreeFormInput(boolean)` has been set to false.

### setLabel

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/core#1.1.0)

```
public @NonNull RemoteInput.Builder setLabel(@Nullable CharSequence label)
```

Set a label to be displayed to the user when collecting this input.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/CharSequence.html label` | The label to show to users when they input a response |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder` | this object for method chaining |