As APIs eUICC fornecem códigos de erro para ajudar apps e usuários a resolver problemas relacionados a download, ativação, desativação e exclusão de perfis de eSIM.
Solucionar erros
Quando ocorre um erro ao chamar a API eUICC, um callback de intent pendente é
fornecido e
EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE
é usado como a chave para receber o código de erro detalhado. A partir do
Android 11, as quatro chaves e valores a seguir são
incluídos na intent resultante:
- EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE: fornece informações sobre o que deu errado. Por exemplo, fazer o download ou excluir um perfil de eSIM. Esse campo nunca fica vazio.
- EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE: Informações sobre o motivo do erro. Por exemplo, o tempo limite da solicitação expirou ou o dispositivo está bloqueado pela operadora. Esse campo não é preenchido nos seguintes casos:- O código da operação é
OPERATION_SMDX_SUBJECT_REASON_CODE.
- O erro é de baixo nível, como IOExceptionouInterruptedException.
 
- O código da operação é
- EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE: usado com- EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE, que juntos fornecem SubjectCode[5.2.6.1] e ReasonCode[5.2.6.2] da GSMA (SGP.22 v2.2). Esse campo só é preenchido quando o código da operação é- OPERATION_SMDX_SUBJECT_REASON_CODE.
- EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE: usado com- EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE, que juntos fornecem SubjectCode[5.2.6.1] e ReasonCode[5.2.6.2] da GSMA (SGP.22 v2.2). Esse campo só é preenchido quando o código da operação é- OPERATION_SMDX_SUBJECT_REASON_CODE.
Esses quatro valores permitem que o autor da chamada da API eUICC processe erros específicos individualmente. Confira abaixo um exemplo de como lidar com esses erros.
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.
}
Combinações de operação e código de erro compatíveis
A tabela a seguir descreve a combinação compatível de operação e códigos de erro retornados pelo assistente de perfil local (LPA, na sigla em inglês).
| Combinações de operação e código de erro | |||
|---|---|---|---|
| Código da operação | Código do erro | Descrição | |
| OPERATION_SYSTEM | Não relevante | Ocorreu um erro interno. Por exemplo, a linha de execução foi interrompida ou ocorreu um erro de IOException. | |
| OPERATION_SIM_SLOT | Não relevante | Ocorreu um erro interno ao realizar uma operação de slot de SIM. | |
| ERROR_TIME_OUT | Tempo limite excedido ao tentar realizar uma operação de slot de chip. | ||
| ERROR_EUICC_MISSING | Nenhuma eUICC está disponível ou ativa no dispositivo. | ||
| OPERATION_EUICC_CARD | Não relevante | Ocorreu um erro interno ao realizar uma operação de eUICC. | |
| ERROR_UNSUPPORTED_VERSION | A versão do eUICC (chip) e a versão do EuiccCard (software) não são compatíveis. | ||
| ERROR_EUICC_MISSING | Nenhum chip está disponível no dispositivo. Por exemplo, a LPA não consegue detectar o chip. | ||
| OPERATION_SMDX | Não relevante | Ocorreu um erro interno ao realizar uma operação SM-DP+/SM-DS. | |
| ERROR_ADDRESS_MISSING | Não há endereço SM-DP+ para fazer o download do perfil. | ||
| ERROR_INVALID_CONFIRMATION_CODE | Ocorreu um erro ao analisar o código de ativação (formato inválido). | ||
| ERROR_CERTIFICATE_ERROR | Erro de keystore ou certificado quando usado em uma conexão TLS para verificação. | ||
| ERROR_NO_PROFILES_AVAILABLE | Nenhum perfil disponível no SM-DP+. | ||
| ERROR_CONNECTION_ERROR | Não é possível criar uma conexão com o servidor. | ||
| ERROR_INVALID_RESPONSE | Resposta inválida do servidor SM-DP+/SM-DS. | ||
| OPERATION_SWITCH | Não relevante | Ocorreu um erro interno ao realizar uma operação de troca. | |
| ERROR_CARRIER_LOCKED | Não é possível trocar de perfil porque o dispositivo está bloqueado pela operadora (bloqueio de chip). | ||
| OPERATION_DOWNLOAD | Não relevante | Ocorreu um erro interno ao realizar uma operação de download. | |
| ERROR_DISALLOWED_BY_PPR | A tabela de autorização de regras na eUICC é nula ou o download não é permitido pela regra de política do perfil. | ||
| ERROR_INVALID_ACTIVATION_CODE | Ocorreu um erro ao analisar o código de ativação (formato inválido) ou ao tentar fazer o download sem um código de ativação. | ||
| ERROR_CARRIER_LOCKED | Não é possível fazer o download porque o dispositivo está bloqueado pela operadora (bloqueio de chip). | ||
| ERROR_INCOMPATIBLE_CARRIER | A operadora está na lista negra, e o LPA não pode fazer o download de um perfil do SM-DP+/SM-DS. | ||
| ERROR_OPERATION_BUSY | O download do perfil está em andamento, e nenhuma outra ação que possa acionar mudanças de estado do SIM é permitida. | ||
| OPERATION_METADATA | Não relevante | Ocorreu um erro interno ao realizar a operação de metadados. | |
| ERROR_INVALID_ACTIVATION_CODE | Os metadados da assinatura estão vazios ou o código de ativação dentro deles está vazio ou é inválido. | ||
| ERROR_INCOMPATIBLE_CARRIER | A operadora está na lista negra, e o LPA não pode fazer o download do perfil dela no SM-DP+/SM-DS. | ||
| OPERATION_EUICC_GSMA | Não relevante | Ocorreu um erro interno ao realizar uma operação da GSMA com eUICC. | |
| ERROR_INSTALL_PROFILE | Erro com a eUICC ao tentar instalar o perfil. Por exemplo, o perfil já existe ou o ICCID não corresponde. | ||
| ERROR_EUICC_INSUFFICIENT_MEMORY | Erro com a eUICC ao tentar instalar o perfil. Não há memória suficiente no eUICC. | ||
| ERROR_DISALLOWED_BY_PPR | Erro com a eUICC ao tentar instalar o perfil. Não permitido pela regra de política de perfil. | ||
| OPERATION_APDU | Não relevante | Ocorreu um erro interno ao realizar uma operação de APDU. | |
| OPERATION_HTTP | 1-999 | O código de erro é um valor de erro HTTP. | |
| Código da operação | Código do assunto | Código do motivo | Descrição | 
| OPERATION_SMDX_SUBJECT_REASON_CODE | A string contém três dígitos separados por ponto, sem zeros à esquerda. Por
exemplo, 8.1.1. | A string contém três dígitos separados por um ponto sem zeros à esquerda. Por
exemplo, 3.8. | SubjectCode[5.2.6.1] e ReasonCode[5.2.6.2] da GSMA (SGP.22 v2.2). Por exemplo, um SubjectCode de 8.1.1e um ReasonCode de3.8significam que o EID está vinculado a outro dispositivo. | 
