Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions) Summary: [Constants](https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#constants) \| [Ctors](https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#pubctors) \| [Methods](https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#inhmethods)

# CrossDeviceAuthenticationException

*** ** * ** ***


`
public

final

class
CrossDeviceAuthenticationException
`


`


`

`


`

`

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


`

`


`

|---|---|---|---|
| [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) ||
|   |   | ↳ | android.security.authenticationpolicy.CrossDeviceAuthenticationException |

<br />

*** ** * ** ***

Exception thrown when cross-device authentication fails.

## Summary

| ### Constants ||
|---|---|
| `int` | `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_COMPANION_DEVICE_MANAGER_NOT_PRESENT` CompanionDeviceManager is not present on this device. |
| `int` | `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_DECRYPTION_FAILED` Decryption of the payload failed. |
| `int` | `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_INVALID_PACKAGE` The calling package is invalid or not allowlisted. |
| `int` | `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_INVALID_TIMESTAMP` The request timestamp is invalid. |
| `int` | `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_NOT_IN_FOREGROUND` The calling package was not visible in the foreground. |
| `int` | `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_SERIALIZATION_FAILED` Serialization or deserialization of the request failed. |
| `int` | `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_UNAUTHORIZED` The request is not authorized. |
| `int` | `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_UNKNOWN` Unknown error occurred. |

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#CrossDeviceAuthenticationException(int)(int errorCode) ` |
| ` https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#CrossDeviceAuthenticationException(int,%20java.lang.String)(int errorCode, https://developer.android.com/reference/java/lang/String message) ` |
| ` https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#CrossDeviceAuthenticationException(int,%20java.lang.String,%20java.lang.Throwable)(int errorCode, https://developer.android.com/reference/java/lang/String message, https://developer.android.com/reference/java/lang/Throwable cause) ` |

| ### Public methods ||
|---|---|
| ` int` | ` https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#getErrorCode()() ` Returns the error code associated with this exception. |

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


## Constants

### ERROR_COMPANION_DEVICE_MANAGER_NOT_PRESENT

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public static final int ERROR_COMPANION_DEVICE_MANAGER_NOT_PRESENT
```

CompanionDeviceManager is not present on this device.

<br />

Constant Value:

7
(0x00000007)


### ERROR_DECRYPTION_FAILED

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public static final int ERROR_DECRYPTION_FAILED
```

Decryption of the payload failed.

<br />

Constant Value:

2
(0x00000002)


### ERROR_INVALID_PACKAGE

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public static final int ERROR_INVALID_PACKAGE
```

The calling package is invalid or not allowlisted.

<br />

Constant Value:

3
(0x00000003)


### ERROR_INVALID_TIMESTAMP

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public static final int ERROR_INVALID_TIMESTAMP
```

The request timestamp is invalid.

<br />

Constant Value:

4
(0x00000004)


### ERROR_NOT_IN_FOREGROUND

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public static final int ERROR_NOT_IN_FOREGROUND
```

The calling package was not visible in the foreground.

Some form of foreground visibility is always required, but the exact definition of
varies based on the device's form factor.

<br />

Constant Value:

6
(0x00000006)


### ERROR_SERIALIZATION_FAILED

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public static final int ERROR_SERIALIZATION_FAILED
```

Serialization or deserialization of the request failed.

<br />

Constant Value:

5
(0x00000005)


### ERROR_UNAUTHORIZED

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public static final int ERROR_UNAUTHORIZED
```

The request is not authorized.

This error indicates that the user must take some action on the source device before
the request can be fulfilled. The required conditions vary by form factor, but typically
require that the has either unlocked the source device directly or has an an active
connection to another trusted device. See the associated message for more details.

A more specific error code from this class will be returned instead this error for
common error conditions that do not vary.

<br />

Constant Value:

1
(0x00000001)


### ERROR_UNKNOWN

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public static final int ERROR_UNKNOWN
```

Unknown error occurred.

<br />

Constant Value:

0
(0x00000000)


## Public constructors

### CrossDeviceAuthenticationException

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public CrossDeviceAuthenticationException (int errorCode)
```

<br />

<br />

| Parameters ||
|---|---|
| `errorCode` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_UNKNOWN` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_UNAUTHORIZED` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_DECRYPTION_FAILED` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_INVALID_PACKAGE` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_INVALID_TIMESTAMP` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_SERIALIZATION_FAILED` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_NOT_IN_FOREGROUND` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_COMPANION_DEVICE_MANAGER_NOT_PRESENT` |

### CrossDeviceAuthenticationException

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public CrossDeviceAuthenticationException (int errorCode, 
                String message)
```

<br />

<br />

| Parameters ||
|---|---|
| `errorCode` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_UNKNOWN` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_UNAUTHORIZED` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_DECRYPTION_FAILED` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_INVALID_PACKAGE` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_INVALID_TIMESTAMP` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_SERIALIZATION_FAILED` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_NOT_IN_FOREGROUND` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_COMPANION_DEVICE_MANAGER_NOT_PRESENT` |
| `message` | `String`: This value cannot be `null`. <br /> |

### CrossDeviceAuthenticationException

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public CrossDeviceAuthenticationException (int errorCode, 
                String message, 
                Throwable cause)
```

<br />

<br />

| Parameters ||
|---|---|
| `errorCode` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_UNKNOWN` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_UNAUTHORIZED` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_DECRYPTION_FAILED` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_INVALID_PACKAGE` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_INVALID_TIMESTAMP` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_SERIALIZATION_FAILED` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_NOT_IN_FOREGROUND` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_COMPANION_DEVICE_MANAGER_NOT_PRESENT` |
| `message` | `String`: This value cannot be `null`. <br /> |
| `cause` | `Throwable`: This value cannot be `null`. <br /> |

## Public methods

### getErrorCode

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public int getErrorCode ()
```

Returns the error code associated with this exception.

<br />

| Returns ||
|---|---|
| `int` | Value is one of the following: - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_UNKNOWN` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_UNAUTHORIZED` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_DECRYPTION_FAILED` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_INVALID_PACKAGE` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_INVALID_TIMESTAMP` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_SERIALIZATION_FAILED` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_NOT_IN_FOREGROUND` - `https://developer.android.com/reference/android/security/authenticationpolicy/CrossDeviceAuthenticationException#ERROR_COMPANION_DEVICE_MANAGER_NOT_PRESENT` |