# ContentMetadata

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

*** ** * ** ***


```
@UnstableApi
public interface ContentMetadata
```

<br />

Known direct subclasses [DefaultContentMetadata](https://developer.android.com/reference/androidx/media3/datasource/cache/DefaultContentMetadata)

|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/cache/DefaultContentMetadata` | Default implementation of `https://developer.android.com/reference/androidx/media3/datasource/cache/ContentMetadata`. |

*** ** * ** ***

Interface for an immutable snapshot of keyed metadata.

## Summary

| ### Constants |
|---|---|
| `default static final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/datasource/cache/ContentMetadata#KEY_CONTENT_LENGTH() = "exo_len"` Key for content length in bytes (type: long). |
| `default static final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/datasource/cache/ContentMetadata#KEY_CUSTOM_PREFIX() = "custom_"` Prefix for custom metadata keys. |
| `default static final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/datasource/cache/ContentMetadata#KEY_REDIRECTED_URI() = "exo_redir"` Key for redirected uri (type: String). |

| ### Public methods |
|---|---|
| `abstract boolean` | `https://developer.android.com/reference/androidx/media3/datasource/cache/ContentMetadata#contains(java.lang.String)(https://developer.android.com/reference/java/lang/String.html key)` Returns whether the metadata is available. |
| `abstract @https://developer.android.com/reference/androidx/annotation/Nullable byte[]` | `https://developer.android.com/reference/androidx/media3/datasource/cache/ContentMetadata#get(java.lang.String,byte[])(https://developer.android.com/reference/java/lang/String.html key, @https://developer.android.com/reference/androidx/annotation/Nullable byte[] defaultValue)` Returns a metadata value. |
| `abstract long` | `https://developer.android.com/reference/androidx/media3/datasource/cache/ContentMetadata#get(java.lang.String,long)(https://developer.android.com/reference/java/lang/String.html key, long defaultValue)` Returns a metadata value. |
| `abstract @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/datasource/cache/ContentMetadata#get(java.lang.String,java.lang.String)(https://developer.android.com/reference/java/lang/String.html key, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html defaultValue)` Returns a metadata value. |
| `default static long` | `https://developer.android.com/reference/androidx/media3/datasource/cache/ContentMetadata#getContentLength(androidx.media3.datasource.cache.ContentMetadata)(https://developer.android.com/reference/androidx/media3/datasource/cache/ContentMetadata contentMetadata)` Returns the value stored under `https://developer.android.com/reference/androidx/media3/datasource/cache/ContentMetadata#KEY_CONTENT_LENGTH()`, or `https://developer.android.com/reference/androidx/media3/common/C#LENGTH_UNSET()` if not set. |
| `default static @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/net/Uri.html` | `https://developer.android.com/reference/androidx/media3/datasource/cache/ContentMetadata#getRedirectedUri(androidx.media3.datasource.cache.ContentMetadata)(https://developer.android.com/reference/androidx/media3/datasource/cache/ContentMetadata contentMetadata)` Returns the value stored under `https://developer.android.com/reference/androidx/media3/datasource/cache/ContentMetadata#KEY_REDIRECTED_URI()` as a `https://developer.android.com/reference/android/net/Uri.html`, or {code null} if not set. |

## Constants

### KEY_CONTENT_LENGTH

```
default static final String KEY_CONTENT_LENGTH = "exo_len"
```

Key for content length in bytes (type: long).

### KEY_CUSTOM_PREFIX

```
default static final String KEY_CUSTOM_PREFIX = "custom_"
```

Prefix for custom metadata keys. Applications can use keys starting with this prefix without any risk of their keys colliding with ones defined by the ExoPlayer library.

### KEY_REDIRECTED_URI

```
default static final String KEY_REDIRECTED_URI = "exo_redir"
```

Key for redirected uri (type: String).

## Public methods

### contains

```
abstract boolean contains(String key)
```

Returns whether the metadata is available.

### get

```
abstract @Nullable byte[] get(String key, @Nullable byte[] defaultValue)
```

Returns a metadata value.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html key` | Key of the metadata to be returned. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable byte[] defaultValue` | Value to return if the metadata doesn't exist. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable byte[]` | The metadata value. |

### get

```
abstract long get(String key, long defaultValue)
```

Returns a metadata value.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html key` | Key of the metadata to be returned. |
| `long defaultValue` | Value to return if the metadata doesn't exist. |

| Returns |
|---|---|
| `long` | The metadata value. |

### get

```
abstract @Nullable String get(String key, @Nullable String defaultValue)
```

Returns a metadata value.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html key` | Key of the metadata to be returned. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html defaultValue` | Value to return if the metadata doesn't exist. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html` | The metadata value. |

### getContentLength

```
default static long getContentLength(ContentMetadata contentMetadata)
```

Returns the value stored under `https://developer.android.com/reference/androidx/media3/datasource/cache/ContentMetadata#KEY_CONTENT_LENGTH()`, or `https://developer.android.com/reference/androidx/media3/common/C#LENGTH_UNSET()` if not set.

### getRedirectedUri

```
default static @Nullable Uri getRedirectedUri(ContentMetadata contentMetadata)
```

Returns the value stored under `https://developer.android.com/reference/androidx/media3/datasource/cache/ContentMetadata#KEY_REDIRECTED_URI()` as a `https://developer.android.com/reference/android/net/Uri.html`, or {code null} if not set.