As APIs eUICC fornecem códigos de erro para ajudar apps e usuários a resolver problemas relacionados ao 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 chave para acessar o código detalhado do erro. A partir do
Android 11, as quatro chaves e valores a seguir são
incluídas 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 por que o erro ocorreu. Por exemplo, a 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 nível baixo, 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 o ReasonCode[5.2.6.2] do GSMA (SGP.22 v2.2). Esse campo é preenchido somente quando o código de 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 o ReasonCode[5.2.6.2] do GSMA (SGP.22 v2.2). Esse campo é preenchido somente quando o código de 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 a seguir 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 compatíveis de operação e código de erro
A tabela a seguir descreve a combinação de operação e códigos de erro retornados pelo assistente de perfil local (LPA, na sigla em inglês).
Combinações de códigos de operação e 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 um
erro IOException ocorreu. |
|
OPERATION_SIM_SLOT |
Não relevante | Ocorreu um erro interno ao realizar uma operação de slot do SIM. | |
ERROR_TIME_OUT |
O tempo limite foi atingido ao tentar realizar uma operação no slot do chip. | ||
ERROR_EUICC_MISSING |
Nenhum eUICC está disponível ou ativo 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, o 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á um 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 ao ser 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 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 interruptor. | |
ERROR_CARRIER_LOCKED |
Não é permitido mudar 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 é autorizado pela regra da 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 o download sem um código de ativação. | ||
ERROR_CARRIER_LOCKED |
Sem permissão para fazer o download porque o dispositivo está bloqueado pela operadora (chip bloqueado). | ||
ERROR_INCOMPATIBLE_CARRIER |
A operadora está na lista de bloqueio, 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 no estado do SIM é permitida. | ||
OPERATION_METADATA |
Não relevante | 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 nos metadados da assinatura está vazio ou inválido. | ||
ERROR_INCOMPATIBLE_CARRIER |
A operadora está na lista de bloqueio, 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 eUICC GSMA. | |
ERROR_INSTALL_PROFILE |
Erro com o eUICC ao tentar instalar o perfil. Por exemplo, o perfil já existe ou o ICCID não corresponde. | ||
ERROR_EUICC_INSUFFICIENT_MEMORY |
Erro com o eUICC ao tentar instalar o perfil. Não há memória suficiente no eUICC. | ||
ERROR_DISALLOWED_BY_PPR |
Erro com o eUICC ao tentar instalar o perfil. Não permitido pela regra de política do perfil. | ||
OPERATION_APDU |
Não relevante | Ocorreu um erro interno ao realizar uma operação 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 ponto sem zeros à esquerda. Por
exemplo, 3.8 . |
SubjectCode[5.2.6.1] e ReasonCode[5.2.6.2] do 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. |