Processar erros da API eUICC

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:

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.