Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Methods](https://developer.android.com/reference/android/media/MediaDrm.MediaDrmStateException#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/media/MediaDrm.MediaDrmStateException#inhmethods)

# MediaDrm.MediaDrmStateException

*** ** * ** ***


`
public
static
final

class
MediaDrm.MediaDrmStateException
`


`


`

`


`

`


`

`


`

`

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


`

`


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) |||
|   |   |   | ↳ | [java.lang.IllegalStateException](https://developer.android.com/reference/java/lang/IllegalStateException) ||
|   |   |   |   | ↳ | android.media.MediaDrm.MediaDrmStateException |

<br />

*** ** * ** ***

Thrown when a general failure occurs during a MediaDrm operation.
Extends `https://developer.android.com/reference/java/lang/IllegalStateException` with the addition of an error
code that may be useful in diagnosing the failure.


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 from `https://developer.android.com/reference/android/media/MediaDrm.MediaDrmStateException#getErrorCode()`.

## Summary

| ### Public methods ||
|---|---|
| ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/media/MediaDrm.MediaDrmStateException#getDiagnosticInfo()() ` Retrieve a developer-readable diagnostic information string associated with the exception. |
| ` int` | ` https://developer.android.com/reference/android/media/MediaDrm.MediaDrmStateException#getErrorCode()() ` Returns error code associated with this `https://developer.android.com/reference/android/media/MediaDrm.MediaDrmStateException`. |
| ` int` | ` https://developer.android.com/reference/android/media/MediaDrm.MediaDrmStateException#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/MediaDrm.MediaDrmStateException#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/MediaDrm.MediaDrmStateException#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`. |
| ` boolean` | ` https://developer.android.com/reference/android/media/MediaDrm.MediaDrmStateException#isTransient()() ` Returns true if the `https://developer.android.com/reference/android/media/MediaDrm.MediaDrmStateException` is a transient issue, perhaps due to resource constraints, and that the operation (e.g. provisioning) may succeed on a subsequent attempt. |

| ### 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`. | ||

## Public methods

### getDiagnosticInfo

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

```
public String getDiagnosticInfo ()
```

Retrieve a developer-readable diagnostic information string
associated with the exception. Do not show this to end-users,
since this string will not be localized or generally comprehensible
to end-users.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | This value cannot be `null`. <br /> |

### getErrorCode

Added in [API level 31](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/MediaDrm.MediaDrmStateException`.


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_CERTIFICATE_MALFORMED` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_CERTIFICATE_MISSING` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_CRYPTO_LIBRARY` - `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_INIT_DATA` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_KEY_NOT_LOADED` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_LICENSE_PARSE` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_LICENSE_POLICY` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_LICENSE_RELEASE` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_LICENSE_REQUEST_REJECTED` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_LICENSE_RESTORE` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_LICENSE_STATE` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_MEDIA_FRAMEWORK` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_PROVISIONING_CERTIFICATE` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_PROVISIONING_CONFIG` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_PROVISIONING_PARSE` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_PROVISIONING_REQUEST_REJECTED` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_PROVISIONING_RETRY` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_SECURE_STOP_RELEASE` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_STORAGE_READ` - `https://developer.android.com/reference/android/media/MediaDrm.ErrorCodes#ERROR_STORAGE_WRITE` - `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 /> |

### isTransient

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

```
public boolean isTransient ()
```

Returns true if the `https://developer.android.com/reference/android/media/MediaDrm.MediaDrmStateException` is a transient
issue, perhaps due to resource constraints, and that the operation
(e.g. provisioning) may succeed on a subsequent attempt.

<br />

| Returns ||
|---|---|
| `boolean` | <br /> |