Como lidar com erros da API eUICC

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:

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.