# MediaDrmCallback

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/MediaDrmCallback.java+class:androidx.media3.exoplayer.drm.MediaDrmCallback)

*** ** * ** ***


```
@UnstableApi
public interface MediaDrmCallback
```

<br />

Known direct subclasses [FakeExoMediaDrm.LicenseServer](https://developer.android.com/reference/androidx/media3/test/utils/FakeExoMediaDrm.LicenseServer), [HttpMediaDrmCallback](https://developer.android.com/reference/androidx/media3/exoplayer/drm/HttpMediaDrmCallback), [LocalMediaDrmCallback](https://developer.android.com/reference/androidx/media3/exoplayer/drm/LocalMediaDrmCallback)

|---|---|
| `https://developer.android.com/reference/androidx/media3/test/utils/FakeExoMediaDrm.LicenseServer` | An license server implementation to interact with `https://developer.android.com/reference/androidx/media3/test/utils/FakeExoMediaDrm`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/HttpMediaDrmCallback` | A `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback` that makes requests using `https://developer.android.com/reference/androidx/media3/datasource/DataSource` instances. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/LocalMediaDrmCallback` | A `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback` that provides a fixed response to key requests. |

*** ** * ** ***

Performs `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm` key and provisioning requests.

## Summary

| ### Nested types |
|---|
| `public final class https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback.Response` Response data from the `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback` requests. |
| `public final class https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback.Response.Builder` Builder for `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback.Response` instances. |

| ### Public methods |
|---|---|
| `abstract https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback.Response` | `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback#executeKeyRequest(java.util.UUID,androidx.media3.exoplayer.drm.ExoMediaDrm.KeyRequest)(https://developer.android.com/reference/java/util/UUID.html uuid, https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.KeyRequest request)` Executes a key request. |
| `abstract https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback.Response` | `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback#executeProvisionRequest(java.util.UUID,androidx.media3.exoplayer.drm.ExoMediaDrm.ProvisionRequest)( https://developer.android.com/reference/java/util/UUID.html uuid, https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.ProvisionRequest request )` Executes a provisioning request. |

## Public methods

### executeKeyRequest

```
abstract MediaDrmCallback.Response executeKeyRequest(UUID uuid, ExoMediaDrm.KeyRequest request)
```

Executes a key request.

The `https://developer.android.com/reference/androidx/media3/exoplayer/source/LoadEventInfo` returned inside the `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback.Response` will have the following fields unset, and they must be updated by caller before the `https://developer.android.com/reference/androidx/media3/exoplayer/source/LoadEventInfo` is used elsewhere:

- `https://developer.android.com/reference/androidx/media3/exoplayer/source/LoadEventInfo#loadTaskId()`
- `https://developer.android.com/reference/androidx/media3/exoplayer/source/LoadEventInfo#loadDurationMs()`

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/util/UUID.html uuid` | The UUID of the content protection scheme. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.KeyRequest request` | The request. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback.Response` | The response data. |

| Throws |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallbackException` | If an error occurred executing the request. |

### executeProvisionRequest

```
abstract MediaDrmCallback.Response executeProvisionRequest(
    UUID uuid,
    ExoMediaDrm.ProvisionRequest request
)
```

Executes a provisioning request.

The `https://developer.android.com/reference/androidx/media3/exoplayer/source/LoadEventInfo` returned inside the `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback.Response` will have the following fields unset, and they must be updated by caller before the `https://developer.android.com/reference/androidx/media3/exoplayer/source/LoadEventInfo` is used elsewhere:

- `https://developer.android.com/reference/androidx/media3/exoplayer/source/LoadEventInfo#loadTaskId()`
- `https://developer.android.com/reference/androidx/media3/exoplayer/source/LoadEventInfo#loadDurationMs()`

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/util/UUID.html uuid` | The UUID of the content protection scheme. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.ProvisionRequest request` | The request. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback.Response` | The response data. |

| Throws |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallbackException` | If an error occurred executing the request. |