Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Constants](https://developer.android.com/reference/android/media/MediaCodec.CryptoException#constants) \| [Ctors](https://developer.android.com/reference/android/media/MediaCodec.CryptoException#pubctors) \| [Methods](https://developer.android.com/reference/android/media/MediaCodec.CryptoException#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/media/MediaCodec.CryptoException#inhmethods)

# MediaCodec.CryptoException

*** ** * ** ***


`
public
static
final

class
MediaCodec.CryptoException
`


`


`

`


`

`


`

`

extends https://developer.android.com/reference/java/lang/RuntimeException


`

`


implements

https://developer.android.com/reference/android/media/MediaDrmThrowable


`

|---|---|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) |||||
| ↳ | [java.lang.Throwable](https://developer.android.com/reference/java/lang/Throwable) ||||
|   | ↳ | [java.lang.Exception](https://developer.android.com/reference/java/lang/Exception) |||
|   |   | ↳ | [java.lang.RuntimeException](https://developer.android.com/reference/java/lang/RuntimeException) ||
|   |   |   | ↳ | android.media.MediaCodec.CryptoException |

<br />

*** ** * ** ***

Thrown when a crypto error occurs while queueing a secure input buffer.

## Summary

| ### Constants ||
|---|---|
| `int` | `https://developer.android.com/reference/android/media/MediaCodec.CryptoException#ERROR_FRAME_TOO_LARGE` *This constant was deprecated in API level 31. Please use `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_FRAME_TOO_LARGE`* |
| `int` | `https://developer.android.com/reference/android/media/MediaCodec.CryptoException#ERROR_INSUFFICIENT_OUTPUT_PROTECTION` *This constant was deprecated in API level 31. Please use `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_INSUFFICIENT_OUTPUT_PROTECTION`* |
| `int` | `https://developer.android.com/reference/android/media/MediaCodec.CryptoException#ERROR_INSUFFICIENT_SECURITY` *This constant was deprecated in API level 31. Please use `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_INSUFFICIENT_SECURITY`* |
| `int` | `https://developer.android.com/reference/android/media/MediaCodec.CryptoException#ERROR_KEY_EXPIRED` *This constant was deprecated in API level 31. Please use `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_KEY_EXPIRED`.* |
| `int` | `https://developer.android.com/reference/android/media/MediaCodec.CryptoException#ERROR_LOST_STATE` *This constant was deprecated in API level 31. Please use `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_LOST_STATE`* |
| `int` | `https://developer.android.com/reference/android/media/MediaCodec.CryptoException#ERROR_NO_KEY` *This constant was deprecated in API level 31. Please use `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_NO_KEY`.* |
| `int` | `https://developer.android.com/reference/android/media/MediaCodec.CryptoException#ERROR_RESOURCE_BUSY` *This constant was deprecated in API level 31. Please use `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_RESOURCE_BUSY`* |
| `int` | `https://developer.android.com/reference/android/media/MediaCodec.CryptoException#ERROR_SESSION_NOT_OPENED` *This constant was deprecated in API level 31. Please use `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_SESSION_NOT_OPENED`* |
| `int` | `https://developer.android.com/reference/android/media/MediaCodec.CryptoException#ERROR_UNSUPPORTED_OPERATION` *This constant was deprecated in API level 31. Please use `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_UNSUPPORTED_OPERATION`* |

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/media/MediaCodec.CryptoException#CryptoException(int,%20java.lang.String)(int errorCode, https://developer.android.com/reference/java/lang/String detailMessage) ` |

| ### Public methods ||
|---|---|
| ` https://developer.android.com/reference/android/media/MediaCodec.CryptoInfo` | ` https://developer.android.com/reference/android/media/MediaCodec.CryptoException#getCryptoInfo()() ` Returns CryptoInfo associated with this `https://developer.android.com/reference/android/media/MediaCodec.CryptoException` if any |
| ` int` | ` https://developer.android.com/reference/android/media/MediaCodec.CryptoException#getErrorCode()() ` Returns error code associated with this `https://developer.android.com/reference/android/media/MediaCodec.CryptoException`. |
| ` int` | ` https://developer.android.com/reference/android/media/MediaCodec.CryptoException#getErrorContext()() ` Returns `https://developer.android.com/reference/android/media/MediaDrm` plugin vendor defined error context associated with this `https://developer.android.com/reference/android/media/MediaDrmThrowable`. |
| ` int` | ` https://developer.android.com/reference/android/media/MediaCodec.CryptoException#getOemError()() ` Returns OEM or SOC specific error code associated with this `https://developer.android.com/reference/android/media/MediaDrmThrowable`. |
| ` int` | ` https://developer.android.com/reference/android/media/MediaCodec.CryptoException#getVendorError()() ` Returns `https://developer.android.com/reference/android/media/MediaDrm` plugin vendor defined error code associated with this `https://developer.android.com/reference/android/media/MediaDrmThrowable`. |

| ### Inherited methods |
|---|---|
| From class ` https://developer.android.com/reference/java/lang/Throwable ` |---|---| | ` final void` | ` https://developer.android.com/reference/java/lang/Throwable#addSuppressed(java.lang.Throwable)(https://developer.android.com/reference/java/lang/Throwable exception) ` Appends the specified exception to the exceptions that were suppressed in order to deliver this exception. | | ` https://developer.android.com/reference/java/lang/Throwable` | ` https://developer.android.com/reference/java/lang/Throwable#fillInStackTrace()() ` Fills in the execution stack trace. | | ` https://developer.android.com/reference/java/lang/Throwable` | ` https://developer.android.com/reference/java/lang/Throwable#getCause()() ` Returns the cause of this throwable or `null` if the cause is nonexistent or unknown. | | ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/lang/Throwable#getLocalizedMessage()() ` Creates a localized description of this throwable. | | ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/lang/Throwable#getMessage()() ` Returns the detail message string of this throwable. | | ` https://developer.android.com/reference/java/lang/StackTraceElement` | ` https://developer.android.com/reference/java/lang/Throwable#getStackTrace()() ` Provides programmatic access to the stack trace information printed by `https://developer.android.com/reference/java/lang/Throwable#printStackTrace()`. | | ` final https://developer.android.com/reference/java/lang/Throwable` | ` https://developer.android.com/reference/java/lang/Throwable#getSuppressed()() ` Returns an array containing all of the exceptions that were suppressed, typically by the `try`-with-resources statement, in order to deliver this exception. | | ` https://developer.android.com/reference/java/lang/Throwable` | ` https://developer.android.com/reference/java/lang/Throwable#initCause(java.lang.Throwable)(https://developer.android.com/reference/java/lang/Throwable cause) ` Initializes the *cause* of this throwable to the specified value. | | ` void` | ` https://developer.android.com/reference/java/lang/Throwable#printStackTrace()() ` Prints this throwable and its backtrace to the standard error stream. | | ` void` | ` https://developer.android.com/reference/java/lang/Throwable#printStackTrace(java.io.PrintWriter)(https://developer.android.com/reference/java/io/PrintWriter s) ` Prints this throwable and its backtrace to the specified print writer. | | ` void` | ` https://developer.android.com/reference/java/lang/Throwable#printStackTrace(java.io.PrintStream)(https://developer.android.com/reference/java/io/PrintStream s) ` Prints this throwable and its backtrace to the specified print stream. | | ` void` | ` https://developer.android.com/reference/java/lang/Throwable#setStackTrace(java.lang.StackTraceElement[])(https://developer.android.com/reference/java/lang/StackTraceElement stackTrace) ` Sets the stack trace elements that will be returned by `https://developer.android.com/reference/java/lang/Throwable#getStackTrace()` and printed by `https://developer.android.com/reference/java/lang/Throwable#printStackTrace()` and related methods. | | ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/lang/Throwable#toString()() ` Returns a short description of this throwable. | ||
| From class ` https://developer.android.com/reference/java/lang/Object ` |---|---| | ` https://developer.android.com/reference/java/lang/Object` | ` https://developer.android.com/reference/java/lang/Object#clone()() ` Creates and returns a copy of this object. | | ` boolean` | ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) ` Indicates whether some other object is "equal to" this one. | | ` void` | ` https://developer.android.com/reference/java/lang/Object#finalize()() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. | | ` final https://developer.android.com/reference/java/lang/Class<?>` | ` https://developer.android.com/reference/java/lang/Object#getClass()() ` Returns the runtime class of this `Object`. | | ` int` | ` https://developer.android.com/reference/java/lang/Object#hashCode()() ` Returns a hash code value for the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notify()() ` Wakes up a single thread that is waiting on this object's monitor. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notifyAll()() ` Wakes up all threads that are waiting on this object's monitor. | | ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/lang/Object#toString()() ` Returns a string representation of the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait()() ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*. | ||
| From interface ` https://developer.android.com/reference/android/media/MediaDrmThrowable ` |---|---| | ` default int` | ` https://developer.android.com/reference/android/media/MediaDrmThrowable#getErrorContext()() ` Returns `https://developer.android.com/reference/android/media/MediaDrm` plugin vendor defined error context associated with this `https://developer.android.com/reference/android/media/MediaDrmThrowable`. | | ` default int` | ` https://developer.android.com/reference/android/media/MediaDrmThrowable#getOemError()() ` Returns OEM or SOC specific error code associated with this `https://developer.android.com/reference/android/media/MediaDrmThrowable`. | | ` default int` | ` https://developer.android.com/reference/android/media/MediaDrmThrowable#getVendorError()() ` Returns `https://developer.android.com/reference/android/media/MediaDrm` plugin vendor defined error code associated with this `https://developer.android.com/reference/android/media/MediaDrmThrowable`. | ||

## Constants

### ERROR_FRAME_TOO_LARGE

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_FRAME_TOO_LARGE
```


**This constant was deprecated
in API level 31.**   

Please use `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_FRAME_TOO_LARGE`

This indicates that the video frame being decrypted exceeds
the size of the device's protected output buffers. When
encountering this error the app should try playing content
of a lower resolution.

<br />

Constant Value:

8
(0x00000008)


### ERROR_INSUFFICIENT_OUTPUT_PROTECTION

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_INSUFFICIENT_OUTPUT_PROTECTION
```


**This constant was deprecated
in API level 31.**   

Please use `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_INSUFFICIENT_OUTPUT_PROTECTION`

This indicates that the output protection levels supported by the
device are not sufficient to meet the requirements set by the
content owner in the license policy.

<br />

Constant Value:

4
(0x00000004)


### ERROR_INSUFFICIENT_SECURITY

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_INSUFFICIENT_SECURITY
```


**This constant was deprecated
in API level 31.**   

Please use `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_INSUFFICIENT_SECURITY`

This indicates that the security level of the device is not
sufficient to meet the requirements set by the content owner
in the license policy.

<br />

Constant Value:

7
(0x00000007)


### ERROR_KEY_EXPIRED

Added in [API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_KEY_EXPIRED
```


**This constant was deprecated
in API level 31.**   

Please use `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_KEY_EXPIRED`.

This indicates that the key used for decryption is no longer
valid due to license term expiration. The operation can be retried
after updating the expired keys.

<br />

Constant Value:

2
(0x00000002)


### ERROR_LOST_STATE

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_LOST_STATE
```


**This constant was deprecated
in API level 31.**   

Please use `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_LOST_STATE`

This error indicates that session state has been
invalidated. It can occur on devices that are not capable
of retaining crypto session state across device
suspend/resume. The session must be closed and a new
session opened to resume operation.

<br />

Constant Value:

9
(0x00000009)


### ERROR_NO_KEY

Added in [API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_NO_KEY
```


**This constant was deprecated
in API level 31.**   

Please use `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_NO_KEY`.

This indicates that the requested key was not found when trying to
perform a decrypt operation. The operation can be retried after adding
the correct decryption key.

<br />

Constant Value:

1
(0x00000001)


### ERROR_RESOURCE_BUSY

Added in [API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_RESOURCE_BUSY
```


**This constant was deprecated
in API level 31.**   

Please use `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_RESOURCE_BUSY`

This indicates that a required crypto resource was not able to be
allocated while attempting the requested operation. The operation
can be retried if the app is able to release resources.

<br />

Constant Value:

3
(0x00000003)


### ERROR_SESSION_NOT_OPENED

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_SESSION_NOT_OPENED
```


**This constant was deprecated
in API level 31.**   

Please use `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_SESSION_NOT_OPENED`

This indicates that decryption was attempted on a session that is
not opened, which could be due to a failure to open the session,
closing the session prematurely, or the session being reclaimed
by the resource manager.

<br />

Constant Value:

5
(0x00000005)


### ERROR_UNSUPPORTED_OPERATION

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_UNSUPPORTED_OPERATION
```


**This constant was deprecated
in API level 31.**   

Please use `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_UNSUPPORTED_OPERATION`

This indicates that an operation was attempted that could not be
supported by the crypto system of the device in its current
configuration. It may occur when the license policy requires
device security features that aren't supported by the device,
or due to an internal error in the crypto system that prevents
the specified security policy from being met.

<br />

Constant Value:

6
(0x00000006)


## Public constructors

### CryptoException

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public CryptoException (int errorCode, 
                String detailMessage)
```

<br />

<br />

| Parameters ||
|---|---|
| `errorCode` | `int` <br /> |
| `detailMessage` | `String`: This value may be `null`. <br /> |

## Public methods

### getCryptoInfo

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public MediaCodec.CryptoInfo getCryptoInfo ()
```

Returns CryptoInfo associated with this `https://developer.android.com/reference/android/media/MediaCodec.CryptoException`
if any

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaCodec.CryptoInfo` | CryptoInfo object if any. `https://developer.android.com/reference/android/media/MediaCodec.CryptoException` This value may be `null`. <br /> |

### getErrorCode

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getErrorCode ()
```

Returns error code associated with this `https://developer.android.com/reference/android/media/MediaCodec.CryptoException`.


Please refer to `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes` for the general error
handling strategy and details about each possible return value.

<br />

| Returns ||
|---|---|
| `int` | an error code defined in `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes`. Value is one of the following: - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_NO_KEY` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_KEY_EXPIRED` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_RESOURCE_BUSY` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_INSUFFICIENT_OUTPUT_PROTECTION` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_SESSION_NOT_OPENED` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_UNSUPPORTED_OPERATION` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_INSUFFICIENT_SECURITY` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_FRAME_TOO_LARGE` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_LOST_STATE` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_GENERIC_OEM` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_GENERIC_PLUGIN` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_LICENSE_PARSE` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_MEDIA_FRAMEWORK` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_ZERO_SUBSAMPLES` |

### getErrorContext

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getErrorContext ()
```

Returns `https://developer.android.com/reference/android/media/MediaDrm` plugin vendor defined error context associated with this `https://developer.android.com/reference/android/media/MediaDrmThrowable`.


Please consult the `https://developer.android.com/reference/android/media/MediaDrm` plugin vendor for details on the error context.

<br />

| Returns ||
|---|---|
| `int` | an opaque integer that would help the @`https://developer.android.com/reference/android/media/MediaDrm` vendor locate the source of the error if available, otherwise 0. <br /> |

### getOemError

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getOemError ()
```

Returns OEM or SOC specific error code associated with this `https://developer.android.com/reference/android/media/MediaDrmThrowable`.


Please consult the `https://developer.android.com/reference/android/media/MediaDrm` plugin, chip, or device vendor for details on the
error code.

<br />

| Returns ||
|---|---|
| `int` | an OEM or SOC specific error code if available, otherwise 0. <br /> |

### getVendorError

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getVendorError ()
```

Returns `https://developer.android.com/reference/android/media/MediaDrm` plugin vendor defined error code associated with this `https://developer.android.com/reference/android/media/MediaDrmThrowable`.


Please consult the `https://developer.android.com/reference/android/media/MediaDrm` plugin vendor for details on the error code.

<br />

| Returns ||
|---|---|
| `int` | an error code defined by the `https://developer.android.com/reference/android/media/MediaDrm` plugin vendor if available, otherwise 0. <br /> |