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 la eliminación de perfiles de eSIM.
Soluciona errores
Cuando se produce un error durante la llamada 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:
EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE: Proporciona información sobre lo que salió mal. Por ejemplo, descargar o borrar un perfil de eSIM. Este campo nunca está vacío.EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE: Información sobre por qué se produjo 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 propaga en los siguientes casos:- El código de operación es
OPERATION_SMDX_SUBJECT_REASON_CODE. - El error es de bajo nivel, como
IOExceptionoInterruptedException.
- El código de operación es
EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE: Se usa conEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE, que juntos proporcionan SubjectCode[5.2.6.1] y ReasonCode[5.2.6.2] de GSMA (SGP.22 v2.2). Este campo solo se propaga cuando el código de operación esOPERATION_SMDX_SUBJECT_REASON_CODE.EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE: Se usa conEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE, que juntos proporcionan SubjectCode[5.2.6.1] y ReasonCode[5.2.6.2] de GSMA (SGP.22 v2.2). Este campo solo se propaga cuando el código de operación esOPERATION_SMDX_SUBJECT_REASON_CODE.
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 se muestran desde 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 aplicable | Se produjo un error interno. Por ejemplo, se interrumpió el subproceso o se produjo un error IOException. |
|
OPERATION_SIM_SLOT |
No aplicable | Se produjo un error interno mientras se realizaba una operación de ranura SIM. | |
ERROR_TIME_OUT |
Se agotó el tiempo de espera mientras se intentaba 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 mientras se realizaba una operación de eUICC. | |
ERROR_UNSUPPORTED_VERSION |
La versión de 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 mientras se realizaba una operación de SM-DP+/SM-DS. | |
ERROR_ADDRESS_MISSING |
No hay ninguna dirección SM-DP+ para descargar el perfil. | ||
ERROR_INVALID_CONFIRMATION_CODE |
Se produjo un error mientras se analizaba el código de activación (formato no válido). | ||
ERROR_CERTIFICATE_ERROR |
Error de almacén de claves o certificado cuando se usa 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 SM-DP+/SM-DS. | ||
OPERATION_SWITCH |
No aplicable | Se produjo un error interno mientras se realizaba una operación de cambio. | |
ERROR_CARRIER_LOCKED |
No se permite cambiar el perfil porque el dispositivo está bloqueado por el operador (SIM bloqueada). | ||
OPERATION_DOWNLOAD |
No aplicable | Se produjo un error interno mientras se realizaba una operación de descarga. | |
ERROR_DISALLOWED_BY_PPR |
La tabla de autorización de reglas en la eUICC es nula o la descarga no está permitida por la regla de política de perfil. | ||
ERROR_INVALID_ACTIVATION_CODE |
Se produjo un error mientras se analizaba el código de activación (formato no válido) o se intentaba 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 el LPA no puede descargar un perfil de SM-DP+/SM-DS. | ||
ERROR_OPERATION_BUSY |
La descarga del perfil está en curso y no se permiten otras acciones que puedan activar cambios de estado de la SIM. | ||
OPERATION_METADATA |
No aplicable | Se produjo un error interno mientras se realizaba una 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 el LPA no puede descargar el perfil de este operador desde SM-DP+/SM-DS. | ||
OPERATION_EUICC_GSMA |
No aplicable | Se produjo un error interno mientras se realizaba una operación de eUICC GSMA. | |
ERROR_INSTALL_PROFILE |
Error con eUICC mientras se intentaba instalar el perfil. Por ejemplo, el perfil ya existe o el ICCID no coincide. | ||
ERROR_EUICC_INSUFFICIENT_MEMORY |
Error con eUICC mientras se intentaba instalar el perfil. No hay suficiente memoria en la eUICC. | ||
ERROR_DISALLOWED_BY_PPR |
Error con eUICC mientras se intentaba instalar el perfil. No permitido por la regla de política de perfil. | ||
OPERATION_APDU |
No aplicable | Se produjo un error interno mientras se realizaba 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. |