As APIs eUICC fornecem códigos de erro para ajudar aplicativos e usuários a solucionar problemas relacionados ao download, ativação, desativação e exclusão de perfis eSIM.
Tratamento de erros
Quando ocorre um erro ao chamar a API eUICC, um retorno de chamada de intenção pendente é fornecido e EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE
é usado como a chave para obter 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, baixar ou excluir um perfil eSIM. Este campo nunca fica vazio. EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE
: informações sobre o motivo do erro. Por exemplo, a solicitação expirou ou o dispositivo está bloqueado pela operadora. Este campo não é preenchido nos seguintes casos:- O código da operação é
OPERATION_SMDX_SUBJECT_REASON_CODE
. - O erro é um erro de baixo nível, como
IOException
ouInterruptedException
.
- O código da operação é
EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE
: Usado comEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE
, que juntos fornecem o SubjectCode[5.2.6.1] e ReasonCode[5.2.6.2] da GSMA (SGP.22 v2.2). Este campo é preenchido somente quando o código da operação éOPERATION_SMDX_SUBJECT_REASON_CODE
.EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE
: Usado comEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE
, que juntos fornecem o SubjectCode[5.2.6.1] e ReasonCode[5.2.6.2] da GSMA (SGP.22 v2.2). Este campo é preenchido somente quando o código da operação éOPERATION_SMDX_SUBJECT_REASON_CODE
.
Esses quatro valores permitem que o chamador da API eUICC lide com erros específicos individualmente. A seguir está 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 suportadas de operação e código de erro
A tabela a seguir descreve a combinação suportada de códigos de operação e de erro retornados do LPA (assistente de perfil local).
Combinações de código de operação e erro | |||
---|---|---|---|
Código de operação | Erro de código | Descrição | |
OPERATION_SYSTEM | Não aplicável | Ocorreu um erro interno. Por exemplo, o encadeamento foi interrompido ou ocorreu um erro IOException . | |
OPERATION_SIM_SLOT | Não aplicável | Ocorreu um erro interno ao realizar uma operação no slot SIM. | |
ERROR_TIME_OUT | Tempo limite esgotado ao tentar realizar uma operação no slot SIM. | ||
ERROR_EUICC_MISSING | Nenhum eUICC está disponível ou ativo no dispositivo. | ||
OPERATION_EUICC_CARD | Não aplicável | Ocorreu um erro interno ao executar uma operação eUICC. | |
ERROR_UNSUPPORTED_VERSION | A versão eUICC (chip) e a versão EuiccCard (software) não são compatíveis. | ||
ERROR_EUICC_MISSING | Nenhum cartão SIM está disponível no dispositivo. Por exemplo, o LPA não consegue detectar o cartão SIM. | ||
OPERATION_SMDX | Não aplicável | Ocorreu um erro interno ao executar uma operação SM-DP+/SM-DS. | |
ERROR_ADDRESS_MISSING | Nenhum endereço SM-DP+ para baixar o 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 na 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 conexão com o servidor. | ||
ERROR_INVALID_RESPONSE | Resposta inválida do servidor SM-DP+/SM-DS. | ||
OPERATION_SWITCH | Não aplicável | Ocorreu um erro interno durante a execução de uma operação de comutação. | |
ERROR_CARRIER_LOCKED | Não é permitido mudar de perfil porque o dispositivo está bloqueado pela operadora (SIM bloqueado). | ||
OPERATION_DOWNLOAD | Não aplicável | Ocorreu um erro interno ao realizar uma operação de download. | |
ERROR_DISALLOWED_BY_PPR | A Tabela de Autorização de Regras no eUICC é nula ou o download não é permitido pela regra de política de perfil. | ||
ERROR_INVALID_ACTIVATION_CODE | Ocorreu um erro ao analisar o código de ativação (formato inválido) ou ao tentar fazer download sem código de ativação. | ||
ERROR_CARRIER_LOCKED | Não é permitido fazer download porque o dispositivo está bloqueado pela operadora (SIM bloqueado). | ||
ERROR_INCOMPATIBLE_CARRIER | A operadora está na lista negra e o LPA não consegue baixar um perfil do SM-DP+/SM-DS. | ||
ERROR_OPERATION_BUSY | O download do perfil está em andamento e nenhuma outra ação que possa desencadear alterações no estado do SIM é permitida. | ||
OPERATION_METADATA | Não aplicável | Ocorreu um erro interno ao executar a operação de metadados. | |
ERROR_INVALID_ACTIVATION_CODE | Os metadados da assinatura estão vazios ou o código de ativação dentro dos metadados da assinatura está vazio ou é inválido. | ||
ERROR_INCOMPATIBLE_CARRIER | A operadora está na lista negra e a LPA não pode baixar o perfil dessa operadora do SM-DP+/SM-DS. | ||
OPERATION_EUICC_GSMA | Não aplicável | Ocorreu um erro interno ao realizar uma operação eUICC GSMA. | |
ERROR_INSTALL_PROFILE | Erro com eUICC ao tentar instalar o perfil. Por exemplo, o perfil já existe ou o ICCID não corresponde. | ||
ERROR_EUICC_INSUFFICIENT_MEMORY | Erro com eUICC ao tentar instalar o perfil. Memória insuficiente no eUICC. | ||
ERROR_DISALLOWED_BY_PPR | Erro com eUICC ao tentar instalar o perfil. Não permitido pela regra de política de perfil. | ||
OPERATION_APDU | Não aplicável | Ocorreu um erro interno ao executar uma operação APDU. | |
OPERATION_HTTP | 1-999 | O código de erro é um valor de erro HTTP. | |
Código de operação | Código do assunto | Código de razão | Descrição |
OPERATION_SMDX_SUBJECT_REASON_CODE | String contém 3 dígitos separados por ponto, sem zeros à esquerda. Por exemplo, 8.1.1 . | String contém 3 dígitos separados por 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.1 e um ReasonCode de 3.8 significa que o EID está vinculado a outro dispositivo. |