# RecoverableSecurityException

Added in[API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Summary:[Inherited Constants](https://developer.android.com/reference/android/app/RecoverableSecurityException#inhconstants)\|[Fields](https://developer.android.com/reference/android/app/RecoverableSecurityException#lfields)\|[Ctors](https://developer.android.com/reference/android/app/RecoverableSecurityException#pubctors)\|[Methods](https://developer.android.com/reference/android/app/RecoverableSecurityException#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/android/app/RecoverableSecurityException#inhmethods)  

# RecoverableSecurityException

*** ** * ** ***

[Kotlin](https://developer.android.com/reference/kotlin/android/app/RecoverableSecurityException "View this page in Kotlin")\|Java

`
public

final

class
RecoverableSecurityException
`  
`


``


``


``


``

extends `[SecurityException](https://developer.android.com/reference/java/lang/SecurityException)`


``


implements

`[Parcelable](https://developer.android.com/reference/android/os/Parcelable)`


`

|---|---|---|---|---|------------------------------------------|
| [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.SecurityException](https://developer.android.com/reference/java/lang/SecurityException) ||
|   |   |   |   | ↳ | android.app.RecoverableSecurityException |

<br />

*** ** * ** ***

Specialization of[SecurityException](https://developer.android.com/reference/java/lang/SecurityException)that contains additional information about how to involve the end user to recover from the exception.

This exception is only appropriate where there is a concrete action the user can take to recover and make forward progress, such as confirming or entering authentication credentials, or granting access.

If the receiving app is actively involved with the user, it should present the contained recovery details to help the user make forward progress.

Note: legacy code that receives this exception may treat it as a general[SecurityException](https://developer.android.com/reference/java/lang/SecurityException), and thus there is no guarantee that the messages contained will be shown to the end user.

## Summary

|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ### Inherited constants                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| From interface[android.os.Parcelable](https://developer.android.com/reference/android/os/Parcelable) |-------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `int` | [CONTENTS_FILE_DESCRIPTOR](https://developer.android.com/reference/android/os/Parcelable#CONTENTS_FILE_DESCRIPTOR) Descriptor bit used with[describeContents()](https://developer.android.com/reference/android/os/Parcelable#describeContents()): indicates that the Parcelable object's flattened representation includes a file descriptor.                                                                                                                                            | | `int` | [PARCELABLE_WRITE_RETURN_VALUE](https://developer.android.com/reference/android/os/Parcelable#PARCELABLE_WRITE_RETURN_VALUE) Flag for use with[writeToParcel(Parcel, int)](https://developer.android.com/reference/android/os/Parcelable#writeToParcel(android.os.Parcel,%20int)): the object being written is a return value, that is the result of a function such as "`Parcelable someFunction()`", "`void someFunction(out Parcelable)`", or "`void someFunction(inout Parcelable)`". | |

|                                                                                                                                                                ### Fields                                                                                                                                                                 ||
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------|
| ` public static final `[Creator](https://developer.android.com/reference/android/os/Parcelable.Creator)`<`[RecoverableSecurityException](https://developer.android.com/reference/android/app/RecoverableSecurityException)`>` | [CREATOR](https://developer.android.com/reference/android/app/RecoverableSecurityException#CREATOR) <br /> |

|                                                                                                                                                                                                                                                                 ### Public constructors                                                                                                                                                                                                                                                                 ||
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| ` `[RecoverableSecurityException](https://developer.android.com/reference/android/app/RecoverableSecurityException#RecoverableSecurityException(java.lang.Throwable,%20java.lang.CharSequence,%20android.app.RemoteAction))`(`[Throwable](https://developer.android.com/reference/java/lang/Throwable)` cause, `[CharSequence](https://developer.android.com/reference/java/lang/CharSequence)` userMessage, `[RemoteAction](https://developer.android.com/reference/android/app/RemoteAction)` userAction) ` Create an instance ready to be thrown. |

|                                                                                                                                                                       ### Public methods                                                                                                                                                                        ||
|-------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` int`                                                                              | ` `[describeContents](https://developer.android.com/reference/android/app/RecoverableSecurityException#describeContents())`() ` Describe the kinds of special objects contained in this Parcelable instance's marshaled representation.                                    |
| ` `[RemoteAction](https://developer.android.com/reference/android/app/RemoteAction) | ` `[getUserAction](https://developer.android.com/reference/android/app/RecoverableSecurityException#getUserAction())`() ` Return primary action that will initiate the recovery.                                                                                           |
| ` `[CharSequence](https://developer.android.com/reference/java/lang/CharSequence)   | ` `[getUserMessage](https://developer.android.com/reference/android/app/RecoverableSecurityException#getUserMessage())`() ` Return short message describing the issue for end user audiences, which may be shown in a notification or dialog.                              |
| ` void`                                                                             | ` `[writeToParcel](https://developer.android.com/reference/android/app/RecoverableSecurityException#writeToParcel(android.os.Parcel,%20int))`(`[Parcel](https://developer.android.com/reference/android/os/Parcel)` dest, int flags) ` Flatten this object in to a Parcel. |

| ### Inherited methods |
|-----------------------|---|
| From class` `[java.lang.Throwable](https://developer.android.com/reference/java/lang/Throwable)` ` |-----------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` final void`                                                                                 | ` `[addSuppressed](https://developer.android.com/reference/java/lang/Throwable#addSuppressed(java.lang.Throwable))`(`[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.                                                                                                                                                                                                            | | ` `[Throwable](https://developer.android.com/reference/java/lang/Throwable)                   | ` `[fillInStackTrace](https://developer.android.com/reference/java/lang/Throwable#fillInStackTrace())`() ` Fills in the execution stack trace.                                                                                                                                                                                                                                                                                                                                                                                    | | ` `[Throwable](https://developer.android.com/reference/java/lang/Throwable)                   | ` `[getCause](https://developer.android.com/reference/java/lang/Throwable#getCause())`() ` Returns the cause of this throwable or`null`if the cause is nonexistent or unknown.                                                                                                                                                                                                                                                                                                                                                    | | ` `[String](https://developer.android.com/reference/java/lang/String)                         | ` `[getLocalizedMessage](https://developer.android.com/reference/java/lang/Throwable#getLocalizedMessage())`() ` Creates a localized description of this throwable.                                                                                                                                                                                                                                                                                                                                                               | | ` `[String](https://developer.android.com/reference/java/lang/String)                         | ` `[getMessage](https://developer.android.com/reference/java/lang/Throwable#getMessage())`() ` Returns the detail message string of this throwable.                                                                                                                                                                                                                                                                                                                                                                               | | ` `[StackTraceElement[]](https://developer.android.com/reference/java/lang/StackTraceElement) | ` `[getStackTrace](https://developer.android.com/reference/java/lang/Throwable#getStackTrace())`() ` Provides programmatic access to the stack trace information printed by[printStackTrace()](https://developer.android.com/reference/java/lang/Throwable#printStackTrace()).                                                                                                                                                                                                                                                    | | ` final `[Throwable[]](https://developer.android.com/reference/java/lang/Throwable)           | ` `[getSuppressed](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.                                                                                                                                                                                                                                                                  | | ` `[Throwable](https://developer.android.com/reference/java/lang/Throwable)                   | ` `[initCause](https://developer.android.com/reference/java/lang/Throwable#initCause(java.lang.Throwable))`(`[Throwable](https://developer.android.com/reference/java/lang/Throwable)` cause) ` Initializes the*cause*of this throwable to the specified value.                                                                                                                                                                                                                                                                   | | ` void`                                                                                       | ` `[printStackTrace](https://developer.android.com/reference/java/lang/Throwable#printStackTrace())`() ` Prints this throwable and its backtrace to the standard error stream.                                                                                                                                                                                                                                                                                                                                                    | | ` void`                                                                                       | ` `[printStackTrace](https://developer.android.com/reference/java/lang/Throwable#printStackTrace(java.io.PrintWriter))`(`[PrintWriter](https://developer.android.com/reference/java/io/PrintWriter)` s) ` Prints this throwable and its backtrace to the specified print writer.                                                                                                                                                                                                                                                  | | ` void`                                                                                       | ` `[printStackTrace](https://developer.android.com/reference/java/lang/Throwable#printStackTrace(java.io.PrintStream))`(`[PrintStream](https://developer.android.com/reference/java/io/PrintStream)` s) ` Prints this throwable and its backtrace to the specified print stream.                                                                                                                                                                                                                                                  | | ` void`                                                                                       | ` `[setStackTrace](https://developer.android.com/reference/java/lang/Throwable#setStackTrace(java.lang.StackTraceElement[]))`(`[StackTraceElement[]](https://developer.android.com/reference/java/lang/StackTraceElement)` stackTrace) ` Sets the stack trace elements that will be returned by[getStackTrace()](https://developer.android.com/reference/java/lang/Throwable#getStackTrace())and printed by[printStackTrace()](https://developer.android.com/reference/java/lang/Throwable#printStackTrace())and related methods. | | ` `[String](https://developer.android.com/reference/java/lang/String)                         | ` `[toString](https://developer.android.com/reference/java/lang/Throwable#toString())`() ` Returns a short description of this throwable.                                                                                                                                                                                                                                                                                                                                                                                         | ||
| From class` `[java.lang.Object](https://developer.android.com/reference/java/lang/Object)` ` |--------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` `[Object](https://developer.android.com/reference/java/lang/Object)          | ` `[clone](https://developer.android.com/reference/java/lang/Object#clone())`() ` Creates and returns a copy of this object.                                                                                                                                                      | | ` boolean`                                                                     | ` `[equals](https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object))`(`[Object](https://developer.android.com/reference/java/lang/Object)` obj) ` Indicates whether some other object is "equal to" this one.                                           | | ` void`                                                                        | ` `[finalize](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 `[Class](https://developer.android.com/reference/java/lang/Class)`<?>` | ` `[getClass](https://developer.android.com/reference/java/lang/Object#getClass())`() ` Returns the runtime class of this`Object`.                                                                                                                                                | | ` int`                                                                         | ` `[hashCode](https://developer.android.com/reference/java/lang/Object#hashCode())`() ` Returns a hash code value for the object.                                                                                                                                                 | | ` final void`                                                                  | ` `[notify](https://developer.android.com/reference/java/lang/Object#notify())`() ` Wakes up a single thread that is waiting on this object's monitor.                                                                                                                            | | ` final void`                                                                  | ` `[notifyAll](https://developer.android.com/reference/java/lang/Object#notifyAll())`() ` Wakes up all threads that are waiting on this object's monitor.                                                                                                                         | | ` `[String](https://developer.android.com/reference/java/lang/String)          | ` `[toString](https://developer.android.com/reference/java/lang/Object#toString())`() ` Returns a string representation of the object.                                                                                                                                            | | ` final void`                                                                  | ` `[wait](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`                                                                  | ` `[wait](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`                                                                  | ` `[wait](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` `[android.os.Parcelable](https://developer.android.com/reference/android/os/Parcelable)` ` |------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` abstract int`  | ` `[describeContents](https://developer.android.com/reference/android/os/Parcelable#describeContents())`() ` Describe the kinds of special objects contained in this Parcelable instance's marshaled representation.                                    | | ` abstract void` | ` `[writeToParcel](https://developer.android.com/reference/android/os/Parcelable#writeToParcel(android.os.Parcel,%20int))`(`[Parcel](https://developer.android.com/reference/android/os/Parcel)` dest, int flags) ` Flatten this object in to a Parcel. | ||

## Fields

### CREATOR

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

```
public static final Creator<RecoverableSecurityException> CREATOR
```

<br />

<br />

## Public constructors

### RecoverableSecurityException

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

```
public RecoverableSecurityException (Throwable cause, 
                CharSequence userMessage, 
                RemoteAction userAction)
```

Create an instance ready to be thrown.

<br />

|                                                                                                                                                                                                                                                                                                      Parameters                                                                                                                                                                                                                                                                                                      ||
|---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `cause`       | `Throwable`: original cause with details designed for engineering audiences. This value cannot be`null`. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `userMessage` | `CharSequence`: short message describing the issue for end user audiences, which may be shown in a notification or dialog. This should be localized and less than 64 characters. For example:*PIN required to access Document.pdf* This value cannot be`null`. <br />                                                                                                                                                                                                                                                                                                                                 |
| `userAction`  | `RemoteAction`: primary action that will initiate the recovery. The title should be localized and less than 24 characters. For example:*Enter PIN* . This action must launch an activity that is expected to set[Activity.setResult(int)](https://developer.android.com/reference/android/app/Activity#setResult(int))before finishing to communicate the final status of the recovery. For example, apps that observe[Activity.RESULT_OK](https://developer.android.com/reference/android/app/Activity#RESULT_OK)may choose to immediately retry their operation. This value cannot be`null`. <br /> |

## Public methods

### describeContents

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

```
public int describeContents ()
```

Describe the kinds of special objects contained in this Parcelable instance's marshaled representation. For example, if the object will include a file descriptor in the output of[writeToParcel(android.os.Parcel, int)](https://developer.android.com/reference/android/os/Parcelable#writeToParcel(android.os.Parcel,%20int)), the return value of this method must include the[CONTENTS_FILE_DESCRIPTOR](https://developer.android.com/reference/android/os/Parcelable#CONTENTS_FILE_DESCRIPTOR)bit.

<br />

|                                                                                                                         Returns                                                                                                                         ||
|-------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `int` | a bitmask indicating the set of special object types marshaled by this Parcelable object instance. Value is either`0`or[CONTENTS_FILE_DESCRIPTOR](https://developer.android.com/reference/android/os/Parcelable#CONTENTS_FILE_DESCRIPTOR) <br /> |

### getUserAction

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

```
public RemoteAction getUserAction ()
```

Return primary action that will initiate the recovery.

<br />

|                                                       Returns                                                        ||
|----------------------------------------------------------------------------------|------------------------------------|
| [RemoteAction](https://developer.android.com/reference/android/app/RemoteAction) | This value cannot be`null`. <br /> |

### getUserMessage

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

```
public CharSequence getUserMessage ()
```

Return short message describing the issue for end user audiences, which may be shown in a notification or dialog.

<br />

|                                                      Returns                                                       ||
|--------------------------------------------------------------------------------|------------------------------------|
| [CharSequence](https://developer.android.com/reference/java/lang/CharSequence) | This value cannot be`null`. <br /> |

### writeToParcel

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

```
public void writeToParcel (Parcel dest, 
                int flags)
```

Flatten this object in to a Parcel.

<br />

|                                                                                                                                                                                                                               Parameters                                                                                                                                                                                                                                ||
|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `dest`  | `Parcel`: The Parcel in which the object should be written. This value cannot be`null`. <br />                                                                                                                                                                                                                                                                                                                                                                 |
| `flags` | `int`: Additional flags about how the object should be written. May be 0 or[Parcelable.PARCELABLE_WRITE_RETURN_VALUE](https://developer.android.com/reference/android/os/Parcelable#PARCELABLE_WRITE_RETURN_VALUE). Value is either`0`or a combination of[Parcelable.PARCELABLE_WRITE_RETURN_VALUE](https://developer.android.com/reference/android/os/Parcelable#PARCELABLE_WRITE_RETURN_VALUE), and android.os.Parcelable.PARCELABLE_ELIDE_DUPLICATES <br /> |