Las API de eUICC proporcionan códigos de error para ayudar a las aplicaciones y a los usuarios a solucionar problemas relacionados con la descarga, habilitación, deshabilitación y eliminación de perfiles eSIM.
Errores de manejo
Cuando se produce un error al llamar a la API eUICC, se proporciona una devolución de llamada de intención pendiente y se utiliza 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 la intención resultante:
-
EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE
: proporciona información sobre lo que salió mal. Por ejemplo, descargar o eliminar un perfil eSIM. Este campo nunca está vacío. EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE
: Información sobre por qué ocurrió el error. Por ejemplo, se agotó el tiempo de espera de la solicitud o el dispositivo está bloqueado por el operador. Este campo no se completa en los siguientes casos:- El código de operación es
OPERATION_SMDX_SUBJECT_REASON_CODE
. - El error es un error de bajo nivel como
IOException
oInterruptedException
.
- El código de operación es
EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE
: se utiliza conEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE
, que juntos proporcionan el SubjectCode[5.2.6.1] y el ReasonCode[5.2.6.2] de GSMA (SGP.22 v2.2). Este campo se completa solo cuando el código de operación esOPERATION_SMDX_SUBJECT_REASON_CODE
.EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE
: se utiliza conEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE
, que juntos proporcionan el SubjectCode[5.2.6.1] y el ReasonCode[5.2.6.2] de GSMA (SGP.22 v2.2). Este campo se completa solo cuando el código de operación esOPERATION_SMDX_SUBJECT_REASON_CODE
.
Estos cuatro valores permiten a la persona que llama a la API eUICC manejar errores específicos individualmente. El siguiente es un ejemplo de cómo manejar 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 de códigos de error y operación admitidas
La siguiente tabla describe la combinación admitida de códigos de operación y error devueltos por el asistente de perfil local (LPA).
Combinaciones de códigos de operación y error | |||
---|---|---|---|
Código de operación | Código de error | Descripción | |
OPERATION_SYSTEM | No aplica | Ha ocurrido un error interno. Por ejemplo, el hilo se interrumpió o se produjo un error IOException . | |
OPERATION_SIM_SLOT | No aplica | Se produjo un error interno al realizar una operación de ranura SIM. | |
ERROR_TIME_OUT | Se agotó el tiempo al intentar realizar una operación de ranura SIM. | ||
ERROR_EUICC_MISSING | No hay eUICC disponible ni activo en el dispositivo. | ||
OPERATION_EUICC_CARD | No aplica | Se produjo un error interno al realizar una operación eUICC. | |
ERROR_UNSUPPORTED_VERSION | La versión eUICC (chip) y la versión 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 aplica | Se produjo un error interno al realizar una operación SM-DP+/SM-DS. | |
ERROR_ADDRESS_MISSING | No hay dirección 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 | Error de certificado o almacén de claves cuando se utiliza en una conexión TLS para verificación. | ||
ERROR_NO_PROFILES_AVAILABLE | No hay perfiles disponibles de SM-DP+. | ||
ERROR_CONNECTION_ERROR | No se puede crear una conexión con el servidor. | ||
ERROR_INVALID_RESPONSE | Respuesta no válida del servidor SM-DP+/SM-DS. | ||
OPERATION_SWITCH | No aplica | Se produjo un error interno al realizar una operación de cambio. | |
ERROR_CARRIER_LOCKED | No se permite cambiar de perfil porque el dispositivo está bloqueado por el operador (SIM bloqueada). | ||
OPERATION_DOWNLOAD | No aplica | Se produjo un error interno al realizar una 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 descargar sin código de activación. | ||
ERROR_CARRIER_LOCKED | No se permite la descarga porque el dispositivo está bloqueado por el operador (SIM bloqueada). | ||
ERROR_INCOMPATIBLE_CARRIER | El operador está en la lista negra y la LPA no puede descargar un perfil de SM-DP+/SM-DS. | ||
ERROR_OPERATION_BUSY | La descarga del perfil está en curso y no se permite ninguna otra acción que pueda provocar cambios en el estado de la SIM. | ||
OPERATION_METADATA | No aplica | Se produjo un error interno al realizar la operación de metadatos. | |
ERROR_INVALID_ACTIVATION_CODE | Los metadatos de la suscripción están vacíos o 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 SM-DP+/SM-DS. | ||
OPERATION_EUICC_GSMA | No aplica | Se produjo un error interno al realizar una operación eUICC GSMA. | |
ERROR_INSTALL_PROFILE | Error con eUICC al intentar instalar el perfil. Por ejemplo, el perfil ya existe o el ICCID no coincide. | ||
ERROR_EUICC_INSUFFICIENT_MEMORY | Error con eUICC al intentar instalar el perfil. No hay suficiente memoria en la eUICC. | ||
ERROR_DISALLOWED_BY_PPR | Error con eUICC al intentar instalar el perfil. No permitido por la regla de política de perfil. | ||
OPERATION_APDU | No aplica | Se produjo un error interno al realizar una operación 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 de razón | Descripción |
OPERATION_SMDX_SUBJECT_REASON_CODE | La cadena contiene 3 dígitos separados por puntos, sin ceros a la izquierda. Por ejemplo, 8.1.1 . | La cadena contiene 3 dígitos separados por puntos y sin ceros a la izquierda. 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 significa que el EID está vinculado a otro dispositivo. |