# MediaSession.ConnectionResult.AcceptedResultBuilder

Artifact: [androidx.media3:media3-session](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/session/MediaSession.java+class:androidx.media3.session.MediaSession.ConnectionResult.AcceptedResultBuilder)

*** ** * ** ***


```
@UnstableApi
public class MediaSession.ConnectionResult.AcceptedResultBuilder
```

<br />

*** ** * ** ***

A builder for `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult` instances to accept a connection.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder#AcceptedResultBuilder()()` Creates an instance to configure the result of an accepted connection from a controller. |
| `[AcceptedResultBuilder](https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder#AcceptedResultBuilder(androidx.media3.session.MediaSession))(https://developer.android.com/reference/androidx/media3/session/MediaSession mediaSession)` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder#AcceptedResultBuilder(androidx.media3.session.MediaSession,androidx.media3.session.MediaSession.ControllerInfo)` instead to start with defaults for the given session and controller, or use `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder#AcceptedResultBuilder()` to initialize the builder with empty commands. <br /> |
| `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder#AcceptedResultBuilder(androidx.media3.session.MediaSession,androidx.media3.session.MediaSession.ControllerInfo)( https://developer.android.com/reference/androidx/media3/session/MediaSession mediaSession, https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo controllerInfo )` Creates an instance to configure the result of an accepted connection from a controller with the default available commands given the provided `https://developer.android.com/reference/androidx/media3/session/MediaSession` and `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo`. |

| ### Public methods |
|---|---|
| `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult` | `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder#build()()` Returns a new `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult` instance for accepting a connection. |
| `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder#setAvailablePlayerCommands(androidx.media3.common.Player.Commands)(https://developer.android.com/reference/androidx/media3/common/Player.Commands availablePlayerCommands)` Sets the player commands that are available to the controller that gets this result returned when `https://developer.android.com/reference/androidx/media3/session/MediaSession.Callback#onConnectAsync(androidx.media3.session.MediaSession,androidx.media3.session.MediaSession.ControllerInfo)`. |
| `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder#setAvailableSessionCommands(androidx.media3.session.SessionCommands)(https://developer.android.com/reference/androidx/media3/session/SessionCommands availableSessionCommands)` Sets the session commands that are available to the controller that gets this result returned when `https://developer.android.com/reference/androidx/media3/session/MediaSession.Callback#onConnectAsync(androidx.media3.session.MediaSession,androidx.media3.session.MediaSession.ControllerInfo)`. |
| `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder#setCustomLayout(java.util.List<androidx.media3.session.CommandButton>)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/session/CommandButton> customLayout)` Sets the custom layout, overriding the `https://developer.android.com/reference/androidx/media3/session/MediaSession#getCustomLayout()`. |
| `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder#setMediaButtonPreferences(java.util.List<androidx.media3.session.CommandButton>)( @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/session/CommandButton> mediaButtonPreferences )` Sets the media button preferences, overriding the `https://developer.android.com/reference/androidx/media3/session/MediaSession#getMediaButtonPreferences()`. |
| `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder#setSessionActivity(android.app.PendingIntent)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/app/PendingIntent.html sessionActivity)` Sets the session activity, overriding the `https://developer.android.com/reference/androidx/media3/session/MediaSession#getSessionActivity()`. |
| `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder#setSessionExtras(android.os.Bundle)(https://developer.android.com/reference/android/os/Bundle.html sessionExtras)` Sets the session extras, overriding the `https://developer.android.com/reference/androidx/media3/session/MediaSession#getSessionExtras()`. |

## Public constructors

### AcceptedResultBuilder

```
public AcceptedResultBuilder()
```

Creates an instance to configure the result of an accepted connection from a controller.

The available `https://developer.android.com/reference/androidx/media3/session/SessionCommands` and `https://developer.android.com/reference/androidx/media3/common/Player.Commands` default to empty and need to be configured.

### AcceptedResultBuilder

```
public [AcceptedResultBuilder](https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder#AcceptedResultBuilder(androidx.media3.session.MediaSession))(MediaSession mediaSession)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder#AcceptedResultBuilder(androidx.media3.session.MediaSession,androidx.media3.session.MediaSession.ControllerInfo)` instead to start with defaults for the given session and controller, or use `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder#AcceptedResultBuilder()` to initialize the builder with empty commands.

### AcceptedResultBuilder

```
public AcceptedResultBuilder(
    MediaSession mediaSession,
    MediaSession.ControllerInfo controllerInfo
)
```

Creates an instance to configure the result of an accepted connection from a controller with the default available commands given the provided `https://developer.android.com/reference/androidx/media3/session/MediaSession` and `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo`.

If the controller is `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo#isTrusted()`, the `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult#DEFAULT_PLAYER_COMMANDS()` and either `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult#DEFAULT_SESSION_COMMANDS()` or `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult#DEFAULT_SESSION_AND_LIBRARY_COMMANDS()` are set by default (depending on whether the `
mediaSession` is a `https://developer.android.com/reference/androidx/media3/session/MediaLibraryService.MediaLibrarySession`).

If the controller is not `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo#isTrusted()`, only `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult#DEFAULT_UNTRUSTED_PLAYER_COMMANDS()` and either `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult#DEFAULT_UNTRUSTED_SESSION_COMMANDS()` or `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult#DEFAULT_UNTRUSTED_SESSION_AND_LIBRARY_COMMANDS()` are set by default.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/session/MediaSession mediaSession` | The `https://developer.android.com/reference/androidx/media3/session/MediaSession` for which to create a `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult`. |
| `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo controllerInfo` | The `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo` for which to create a `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult`. |

## Public methods

### build

```
public MediaSession.ConnectionResult build()
```

Returns a new `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult` instance for accepting a connection.

### setAvailablePlayerCommands

```
@CanIgnoreReturnValue
public MediaSession.ConnectionResult.AcceptedResultBuilder setAvailablePlayerCommands(Player.Commands availablePlayerCommands)
```

Sets the player commands that are available to the controller that gets this result returned when `https://developer.android.com/reference/androidx/media3/session/MediaSession.Callback#onConnectAsync(androidx.media3.session.MediaSession,androidx.media3.session.MediaSession.ControllerInfo)`.

This set of available player commands is intersected with the actual player commands supported by a player. The resulting intersection is the set of commands actually being available to a controller.

The default is `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult#DEFAULT_PLAYER_COMMANDS()`.

Interoperability: When accepting a connection from a `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo#LEGACY_CONTROLLER_VERSION()`, this sets the internal player command permissions for that controller, but does not alter the visible playback actions of the shared platform session. Setting available player commands when accepting `https://developer.android.com/reference/androidx/media3/session/MediaSession#getMediaNotificationControllerInfo()` sets the available player commands of the shared platform session, which determines the visible playback actions (`https://developer.android.com/reference/android/support/v4/media/session/PlaybackStateCompat#getActions()`) of the platform session.

### setAvailableSessionCommands

```
@CanIgnoreReturnValue
public MediaSession.ConnectionResult.AcceptedResultBuilder setAvailableSessionCommands(SessionCommands availableSessionCommands)
```

Sets the session commands that are available to the controller that gets this result returned when `https://developer.android.com/reference/androidx/media3/session/MediaSession.Callback#onConnectAsync(androidx.media3.session.MediaSession,androidx.media3.session.MediaSession.ControllerInfo)`.

The default is `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult#DEFAULT_SESSION_AND_LIBRARY_COMMANDS()` for a `https://developer.android.com/reference/androidx/media3/session/MediaLibraryService.MediaLibrarySession` and `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult#DEFAULT_SESSION_COMMANDS()` for a `https://developer.android.com/reference/androidx/media3/session/MediaSession`.

Interoperability: When accepting a connection from a `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo#LEGACY_CONTROLLER_VERSION()`, this sets the internal command permissions for that controller, but does not alter the visible custom actions of the shared platform session. Setting available session commands when accepting `https://developer.android.com/reference/androidx/media3/session/MediaSession#getMediaNotificationControllerInfo()` sets the session commands of the shared platform session, which determines which custom actions are enabled on the platform session.

### setCustomLayout

```
@CanIgnoreReturnValue
public MediaSession.ConnectionResult.AcceptedResultBuilder setCustomLayout(@Nullable List<CommandButton> customLayout)
```

Sets the custom layout, overriding the `https://developer.android.com/reference/androidx/media3/session/MediaSession#getCustomLayout()`.

This method will be deprecated, prefer to use `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder#setMediaButtonPreferences(java.util.List<androidx.media3.session.CommandButton>)`. Note that the media button preferences use `https://developer.android.com/reference/androidx/media3/session/CommandButton#slots()` to define the allowed button placement.

The default is null to indicate that the custom layout of the session should be used.

Make sure to have the session commands of all command buttons of the custom layout included in the `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder#setAvailableSessionCommands(androidx.media3.session.SessionCommands)`. On the controller side, the `https://developer.android.com/reference/androidx/media3/session/CommandButton#isEnabled()` flag is set to `false` if the available commands of the controller do not allow to use a button.

Interoperability: This setting has no effect when accepting a connection from a `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo#LEGACY_CONTROLLER_VERSION()`. Setting a custom layout when accepting `https://developer.android.com/reference/androidx/media3/session/MediaSession#getMediaNotificationControllerInfo()` sets the custom layout of the shared platform session.

### setMediaButtonPreferences

```
@CanIgnoreReturnValue
public MediaSession.ConnectionResult.AcceptedResultBuilder setMediaButtonPreferences(
    @Nullable List<CommandButton> mediaButtonPreferences
)
```

Sets the media button preferences, overriding the `https://developer.android.com/reference/androidx/media3/session/MediaSession#getMediaButtonPreferences()`.

The default is null to indicate that the media button preferences of the session should be used.

Make sure to have the session commands of all command buttons of the media button preferences included in the `https://developer.android.com/reference/androidx/media3/session/MediaSession.ConnectionResult.AcceptedResultBuilder#setAvailableSessionCommands(androidx.media3.session.SessionCommands)`. On the controller side, the `https://developer.android.com/reference/androidx/media3/session/CommandButton#isEnabled()` flag is set to `false` if the available commands of the controller do not allow to use a button.

Interoperability: This setting has no effect when accepting a connection from a `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo#LEGACY_CONTROLLER_VERSION()`. Setting media button preferences when accepting `https://developer.android.com/reference/androidx/media3/session/MediaSession#getMediaNotificationControllerInfo()` sets the media button preferences and custom actions of the shared platform session.

### setSessionActivity

```
@CanIgnoreReturnValue
public MediaSession.ConnectionResult.AcceptedResultBuilder setSessionActivity(@Nullable PendingIntent sessionActivity)
```

Sets the session activity, overriding the `https://developer.android.com/reference/androidx/media3/session/MediaSession#getSessionActivity()`.

The default is null to indicate that the session activity of the session should be used.

Interoperability: This setting has no effect when accepting a connection from a `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo#LEGACY_CONTROLLER_VERSION()`. Setting a session activity when accepting `https://developer.android.com/reference/androidx/media3/session/MediaSession#getMediaNotificationControllerInfo()` sets the session activity of the shared platform session.

### setSessionExtras

```
@CanIgnoreReturnValue
public MediaSession.ConnectionResult.AcceptedResultBuilder setSessionExtras(Bundle sessionExtras)
```

Sets the session extras, overriding the `https://developer.android.com/reference/androidx/media3/session/MediaSession#getSessionExtras()`.

The default is null to indicate that the extras of the session should be used.

Interoperability: This setting has no effect when accepting a connection from a `https://developer.android.com/reference/androidx/media3/session/MediaSession.ControllerInfo#LEGACY_CONTROLLER_VERSION()`. Setting session extras when accepting `https://developer.android.com/reference/androidx/media3/session/MediaSession#getMediaNotificationControllerInfo()` sets the extras of the shared platform session.