Controla los errores de la API de eUICC

Las APIs de eUICC proporcionan códigos de error para ayudar a las apps y a los usuarios a solucionar problemas relacionados con la descarga, la habilitación, la inhabilitación y el borrado de perfiles de eSIM.

Cómo solucionar errores

Cuando se produce un error al llamar a la API de eUICC, se proporciona una devolución de llamada de intent pendiente y se usa EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE como clave para obtener el código de error detallado. A partir de Android 11, se incluyen las siguientes cuatro claves y valores en el intent resultante:

Estos cuatro valores permiten que el llamador de la API de eUICC controle errores específicos de forma individual. A continuación, se muestra un ejemplo de cómo controlar estos errores.

int operationCode = intent.get(EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE)
int errorCode = intent.get(EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE)
String smdxSubjectCode = intent.get(EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE)
String smdxReasonCode = intent.get(EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE)

if (operationCode == OPERATION_DOWNLOAD && errorCode == ERROR_CARRIER_LOCKED) {
  // handle specific error i.e. tries to download but the device is carrier locked
} else if (operationCode == OPERATION_SMDX) {
  // handle all SM-DP+/SM-DS errors
} else if (errorCode == ERROR_TIME_OUT) {
  // handle all types of time out issues, regardless of operation.
} else if ("8.1".equals(smdxSubjectCode) && "3.1".equals(smdxReasonCode)) {
  // handle specific subject code and reason code: 8.1 and 4.1 means insufficient memory.
}

Combinaciones admitidas de códigos de operación y error

En la siguiente tabla, se describe la combinación admitida de códigos de operación y error que devuelve el asistente de perfil local (LPA).

Combinaciones de operación y código de error
Código de operación Código de error Descripción
OPERATION_SYSTEM No aplicable Se produjo un error interno. Por ejemplo, se interrumpió el subproceso o se produjo un error de IOException.
OPERATION_SIM_SLOT No aplicable Se produjo un error interno al realizar una operación de ranura SIM.
ERROR_TIME_OUT Se agotó el tiempo de espera al intentar realizar una operación de ranura SIM.
ERROR_EUICC_MISSING No hay ninguna eUICC disponible o activa en el dispositivo.
OPERATION_EUICC_CARD No aplicable Se produjo un error interno durante la realización de una operación de la eUICC.
ERROR_UNSUPPORTED_VERSION La versión de la eUICC (chip) y la versión de EuiccCard (software) no son compatibles.
ERROR_EUICC_MISSING No hay ninguna tarjeta SIM disponible en el dispositivo. Por ejemplo, el LPA no puede detectar la tarjeta SIM.
OPERATION_SMDX No aplicable Se produjo un error interno durante la realización de una operación de SM-DP+ o SM-DS.
ERROR_ADDRESS_MISSING No hay una dirección de SM-DP+ para descargar el perfil.
ERROR_INVALID_CONFIRMATION_CODE Se produjo un error al analizar el código de activación (formato no válido).
ERROR_CERTIFICATE_ERROR Se produjo un error en el almacén de claves o el certificado cuando se usó en la conexión TLS para la verificación.
ERROR_NO_PROFILES_AVAILABLE No hay perfiles disponibles en SM-DP+.
ERROR_CONNECTION_ERROR No se puede crear una conexión con el servidor.
ERROR_INVALID_RESPONSE Respuesta no válida del servidor de SM-DP+ o SM-DS.
OPERATION_SWITCH No aplicable Se produjo un error interno durante la operación de cambio.
ERROR_CARRIER_LOCKED No se permite cambiar de perfil porque el dispositivo está bloqueado por el operador (bloqueo de SIM).
OPERATION_DOWNLOAD No aplicable Se produjo un error interno durante la operación de descarga.
ERROR_DISALLOWED_BY_PPR La tabla de autorización de reglas en la eUICC es nula o la regla de política del perfil no permite la descarga.
ERROR_INVALID_ACTIVATION_CODE Se produjo un error al analizar el código de activación (formato no válido) o al intentar realizar la descarga sin un código de activación.
ERROR_CARRIER_LOCKED No se permite la descarga porque el dispositivo está bloqueado por el operador (bloqueo de SIM).
ERROR_INCOMPATIBLE_CARRIER El operador está en la lista negra y la LPA no puede descargar un perfil del SM-DP+/SM-DS.
ERROR_OPERATION_BUSY Se está descargando el perfil y no se permite ninguna otra acción que pueda activar cambios en el estado de la SIM.
OPERATION_METADATA No aplicable Se produjo un error interno durante la operación de metadatos.
ERROR_INVALID_ACTIVATION_CODE Los metadatos de la suscripción están vacíos, o bien el código de activación dentro de los metadatos de la suscripción está vacío o no es válido.
ERROR_INCOMPATIBLE_CARRIER El operador está en la lista negra y la LPA no puede descargar el perfil de este operador desde el SM-DP+/SM-DS.
OPERATION_EUICC_GSMA No aplicable Se produjo un error interno al llevar a cabo una operación de GSMA de eUICC.
ERROR_INSTALL_PROFILE Se produjo un error con la eUICC cuando se intentaba instalar el perfil. Por ejemplo, el perfil ya existe o el ICCID no coincide.
ERROR_EUICC_INSUFFICIENT_MEMORY Se produjo un error con la eUICC cuando se intentaba instalar el perfil. No hay suficiente memoria en el eUICC.
ERROR_DISALLOWED_BY_PPR Se produjo un error con la eUICC cuando se intentaba instalar el perfil. No se permite según la regla de política del perfil.
OPERATION_APDU No aplicable Se produjo un error interno durante la realización de una operación de APDU.
OPERATION_HTTP 1-999 El código de error es un valor de error HTTP.
Código de operación Código de asunto Código del motivo Descripción
OPERATION_SMDX_SUBJECT_REASON_CODE La cadena contiene 3 dígitos separados por un punto, sin ceros iniciales. Por ejemplo, 8.1.1. La cadena contiene 3 dígitos separados por un punto sin ceros iniciales. Por ejemplo, 3.8. SubjectCode[5.2.6.1] y ReasonCode[5.2.6.2] de GSMA (SGP.22 v2.2). Por ejemplo, un SubjectCode de 8.1.1 y un ReasonCode de 3.8 significan que el EID está vinculado a otro dispositivo.