---
title: Error handling
canonical: https://developer.unico.io/dual-api/developers/sdks-and-tools/android/error-handling
locale: en
generated_by: markdown-export
---

All error handling for the Android SDK is centralized in this section. The `onErrorAcessoBio` callback receives an `ErrorBio` object with `code` (Int) and `description` (String).

## Handling the callback

### Kotlin

  ```kotlin
  override fun onErrorAcessoBio(error: ErrorBio) {
    when (error.code) {
      73002 -> { /* camera permission denied — redirect to app settings */ }
      73006 -> { /* running on emulator — physical device required */ }
      73100 -> { /* no internet connection */ }
      else -> { /* generic error handling */ }
    }
  }
  ```

### Java

  ```java
  @Override
  public void onErrorAcessoBio(ErrorBio error) {
    switch (error.getCode()) {
      case 73002: /* camera permission denied — redirect to app settings */ break;
      case 73006: /* running on emulator — physical device required */ break;
      case 73100: /* no internet connection */ break;
      default: /* generic error handling */
    }
  }
  ```

## Lifecycle callbacks

In addition to `onErrorAcessoBio`, the SDK also triggers:

- `onUserClosedCameraManually()` — user closed the camera manually.
- `onSystemClosedCameraTimeoutSession()` — session expired due to timeout.
- `onSystemChangedTypeCameraTimeoutFaceInference()` — no face detected for 13 seconds; the SDK switches to manual capture.

## Error codes

All error codes originate from the `UnicoException` enum and are delivered via `ErrorBio(code, message)`. The `message` field contains the exact SDK string — do not modify or localize it.

| Code | Message | Description |
|---|---|---|
| `73001` | `Context invalid` | Invalid Android context passed to the SDK |
| `73002` | `Did not grant permission to open camera` | Camera permission was denied by the user |
| `73003` | `The lest API is 21(LOLLIPOP` | Device API level is below the minimum required (API 21) |
| `73004` | `Could not find implementation interface callback iAcessoBioSelfie` | `iAcessoBioSelfie` interface not implemented |
| `73005` | `Could not find implementation interface callback iAcessoBioDocument` | `iAcessoBioDocument` interface not implemented |
| `73006` | `Unable to open camera on emulators` | SDK does not run on emulators — use a physical device |
| `73007` | `Unknown and unexpected error in WebApp…` | Generic WebApp error (camera, storage, security, networking) |
| `73100` | `Unable to connect to internet.` | No internet connection available |
| `73200` | `Please inform the config object or json file name` | Configuration object or JSON file not provided |
| `73202` | `Unable to parse json file` | JSON configuration file is malformed |
| `73204` | `Unable to initialize the SDK, please configure the environment on setEnviroment method of build` | `setEnvironment()` not called before initialization |
| `73300` | `Unable to get unico authentication object` | Failed to retrieve authentication object |
| `73301` | `Unable to parse object` | Failed to parse authentication response |
| `73302` | `Could not find the unico token` | Unico auth token not found |
| `73303` | `Current host is not registered` | Bundle identifier not registered in the SDK Key |
| `73400` | `Could not initialize camera` | Camera initialization failed |
| `73701` | `Could not find active liveness import` | Active liveness module not found |
| `73703` | `Unable to get active liveness session` | Failed to obtain a liveness session |
| `73718` | `The Session was cancelled because of an unknown and unexpected error…` | Unknown internal session error |
| `73721` | `The Session can't be performed: attempts limit exceeded.` | Session cancelled — capture attempt limit reached |
| `73722` | `The Session can't be performed: face alignment timeout.` | Session cancelled — face alignment timed out |
| `73726` | `An error happened during video recording` | Video recording error during liveness |
| `73727` | `No actions found in a video` | No liveness actions detected in video |
| `73740` | `The user pressed the do not consent button and did not complete the Session.` | User declined consent |
| `73800` | `Could not build encrypted key.` | Failed to build the encrypted JWT |
| `73801` | `The Session of SDK was cancelled because of an unknown and unexpected error.` | Unknown internal SDK session error |
| `73802` | `The Session was cancelled because of an unknown and unexpected error…` | Session cancelled — missing required JWT fields |
| `73900` | `Erro ao analisar imagem` | Error analyzing the captured image |
| `73901` | `É necessário implementar a interface AcessoBioListener` | `AcessoBioListener` interface not implemented |
| `73902` | `É necessário insirir um valor maior que 40 segundos no método: setTimeoutSession.` | `setTimeoutSession` value must be greater than 40 seconds |
| `73903` | `Arquivo de configuração corrompido. Verifique o arquivo json e tente novamente.` | Corrupted configuration file — verify and retry |
| `73904` | `Erro ao finalizar processo` | Error finalizing the capture process |
| `73905` | `Unable to open document camera` | Document camera could not be opened |
| `73906` | `Document type uninformed` | Document type was not specified |
| `74001` | `onSuccess: not implemented when using open:webAppToken:` | `onSuccess` callback not implemented for User Journey |
| `74100` | `Could not prepare SDK-S` | Failed to prepare SDK components |
| `74101` | `No URL token was provided.` | No URL token provided for the journey |
| `74102` | `Environment type was not specified.` | Environment (`PROD`/`UAT`) not configured |
| `737120` | `Unable to initialize liveness` | Liveness activity could not be initialized |
| `737220` | `Capture could not start` | Capture process failed to start |
| `737320` | `Transaction could not start` | Transaction could not be initiated |
| `737321` | `The Session was cancelled because of an unknown and unexpected error. This return value is a catch-all for errors experienced during normal usage of these APIs. Try again.` | Generic session provider error — retry |

:::secondary[REST API error codes]
The codes above are SDK callback errors. REST API error codes (HTTP status families) are documented separately at [API Reference > Error codes](/dual-api/developers/api-reference/error-codes).
:::