# DefaultDrmSessionManagerProvider

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

*** ** * ** ***


```
@UnstableApi
public final class DefaultDrmSessionManagerProvider implements DrmSessionManagerProvider
```

<br />

*** ** * ** ***

Default implementation of `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionManagerProvider`.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManagerProvider#DefaultDrmSessionManagerProvider()()` |

| ### Public methods |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionManager` | `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManagerProvider#get(androidx.media3.common.MediaItem)(https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem)` Returns a `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionManager` for the given media item. |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManagerProvider#setDrmHttpDataSourceFactory(androidx.media3.datasource.DataSource.Factory)( @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory drmDataSourceFactory )` Sets the `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` which is used to create `https://developer.android.com/reference/androidx/media3/exoplayer/drm/HttpMediaDrmCallback` instances. |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManagerProvider#setDrmLoadErrorHandlingPolicy(androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy)( https://developer.android.com/reference/androidx/media3/exoplayer/upstream/LoadErrorHandlingPolicy drmLoadErrorHandlingPolicy )` Sets a load error handling policy to pass to `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#setLoadErrorHandlingPolicy(androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy)`. |
| `void` | `[setDrmUserAgent](https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManagerProvider#setDrmUserAgent(java.lang.String))(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html userAgent)` **This method is deprecated.** Pass a custom `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` to `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManagerProvider#setDrmHttpDataSourceFactory(androidx.media3.datasource.DataSource.Factory)` which sets the desired user agent on outgoing requests. <br /> |

## Public constructors

### DefaultDrmSessionManagerProvider

```
public DefaultDrmSessionManagerProvider()
```

## Public methods

### get

```
public DrmSessionManager get(MediaItem mediaItem)
```

Returns a `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionManager` for the given media item.

The caller is responsible for `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionManager#prepare()` the `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionManager` before use, and subsequently `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionManager#release()` it.

### setDrmHttpDataSourceFactory

```
public void setDrmHttpDataSourceFactory(
    @Nullable DataSource.Factory drmDataSourceFactory
)
```

Sets the `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` which is used to create `https://developer.android.com/reference/androidx/media3/exoplayer/drm/HttpMediaDrmCallback` instances. If `null` is passed a `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource.Factory` is used.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory drmDataSourceFactory` | The data source factory or `null` to use `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource.Factory`. |

### setDrmLoadErrorHandlingPolicy

```
public void setDrmLoadErrorHandlingPolicy(
    LoadErrorHandlingPolicy drmLoadErrorHandlingPolicy
)
```

Sets a load error handling policy to pass to `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#setLoadErrorHandlingPolicy(androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy)`.

If `null` is passed the setter is not called, so the default `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/LoadErrorHandlingPolicy` defined by `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#Builder()` is used instead.

### setDrmUserAgent

```
public void [setDrmUserAgent](https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManagerProvider#setDrmUserAgent(java.lang.String))(@Nullable String userAgent)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Pass a custom `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` to `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManagerProvider#setDrmHttpDataSourceFactory(androidx.media3.datasource.DataSource.Factory)` which sets the desired user agent on outgoing requests.