Gestire gli errori dell'API eUICC

Le API eUICC forniscono codici di errore per aiutare le app e gli utenti a risolvere i problemi relativi al download, all'attivazione, alla disattivazione e all'eliminazione dei profili eSIM.

Gestisci gli errori

Quando si verifica un errore durante la chiamata all'API eUICC, viene fornito un callback di intent in attesa e viene utilizzato come chiave per ottenere il codice di errore dettagliato.EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE A partire da Android 11, i seguenti quattro valori e chiavi sono inclusi nell'intent risultante:

Questi quattro valori consentono al chiamante dell'API eUICC di gestire singolarmente errori specifici. Di seguito è riportato un esempio di come gestire questi errori.

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.
}

Combinazioni di codici di errore e operazione supportate

La tabella seguente descrive la combinazione supportata di codici di errore e operazione restituiti dall'assistente profilo locale (LPA).

Combinazioni di codici di errore e operazione
Codice operazione Codice di errore Descrizione
OPERATION_SYSTEM Non applicabile Si è verificato un errore interno. Ad esempio, il thread è stato interrotto o si è verificato un errore IOException.
OPERATION_SIM_SLOT Non applicabile Si è verificato un errore interno durante l'esecuzione di un'operazione dello slot SIM.
ERROR_TIME_OUT Timeout durante il tentativo di eseguire un'operazione dello slot SIM.
ERROR_EUICC_MISSING Nessun eUICC disponibile o attivo sul dispositivo.
OPERATION_EUICC_CARD Non applicabile Si è verificato un errore interno durante l'esecuzione di un'operazione eUICC.
ERROR_UNSUPPORTED_VERSION La versione di eUICC (chip) e la versione di EuiccCard (software) non sono compatibili.
ERROR_EUICC_MISSING Nessuna scheda SIM disponibile nel dispositivo. Ad esempio, l'LPA non riesce a rilevare la scheda SIM.
OPERATION_SMDX Non applicabile Si è verificato un errore interno durante l'esecuzione di un'operazione SM-DP+/SM-DS.
ERROR_ADDRESS_MISSING Nessun indirizzo SM-DP+ per scaricare il profilo.
ERROR_INVALID_CONFIRMATION_CODE Si è verificato un errore durante l'analisi del codice di attivazione (formato non valido).
ERROR_CERTIFICATE_ERROR Errore del keystore o del certificato quando viene utilizzato nella connessione TLS per la verifica.
ERROR_NO_PROFILES_AVAILABLE Nessun profilo disponibile da SM-DP+.
ERROR_CONNECTION_ERROR Impossibile creare una connessione al server.
ERROR_INVALID_RESPONSE Risposta non valida dal server SM-DP+/SM-DS.
OPERATION_SWITCH Non applicabile Si è verificato un errore interno durante l'esecuzione di un'operazione di cambio.
ERROR_CARRIER_LOCKED Non è consentito cambiare profilo perché il dispositivo è bloccato dall'operatore (blocco SIM).
OPERATION_DOWNLOAD Non applicabile Si è verificato un errore interno durante l'esecuzione di un'operazione di download.
ERROR_DISALLOWED_BY_PPR La tabella di autorizzazione delle regole su eUICC è nulla o il download non è consentito dalla regola della policy del profilo.
ERROR_INVALID_ACTIVATION_CODE Si è verificato un errore durante l'analisi del codice di attivazione (formato non valido) o durante il tentativo di download senza codice di attivazione.
ERROR_CARRIER_LOCKED Non è consentito il download perché il dispositivo è bloccato dall'operatore (blocco SIM).
ERROR_INCOMPATIBLE_CARRIER L'operatore è nella lista bloccata e l'LPA non può scaricare un profilo da SM-DP+/SM-DS.
ERROR_OPERATION_BUSY Il download del profilo è in corso e non sono consentite altre azioni che potrebbero attivare modifiche dello stato della SIM.
OPERATION_METADATA Non applicabile Si è verificato un errore interno durante l'esecuzione dell'operazione sui metadati.
ERROR_INVALID_ACTIVATION_CODE I metadati dell'abbonamento sono vuoti oppure il codice di attivazione all'interno dei metadati dell'abbonamento è vuoto o non valido.
ERROR_INCOMPATIBLE_CARRIER L'operatore è nella lista bloccata e l'LPA non può scaricare il profilo di questo operatore da SM-DP+/SM-DS.
OPERATION_EUICC_GSMA Non applicabile Si è verificato un errore interno durante l'esecuzione di un'operazione eUICC GSMA.
ERROR_INSTALL_PROFILE Errore con eUICC durante il tentativo di installare il profilo. Ad esempio, il profilo esiste già o l'ICCID non corrisponde.
ERROR_EUICC_INSUFFICIENT_MEMORY Errore con eUICC durante il tentativo di installare il profilo. Memoria insufficiente su eUICC.
ERROR_DISALLOWED_BY_PPR Errore con eUICC durante il tentativo di installare il profilo. Non consentito dalla regola della policy del profilo.
OPERATION_APDU Non applicabile Si è verificato un errore interno durante l'esecuzione di un'operazione APDU.
OPERATION_HTTP 1-999 Il codice di errore è un valore di errore HTTP.
Codice operazione Codice oggetto Codice motivo Descrizione
OPERATION_SMDX_SUBJECT_REASON_CODE La stringa contiene 3 cifre separate da un punto, senza zeri iniziali. Ad esempio, 8.1.1. La stringa contiene 3 cifre separate da un punto, senza zeri iniziali. Ad esempio, 3.8. SubjectCode[5.2.6.1] e ReasonCode[5.2.6.2] di GSMA (SGP.22 v2.2). Ad esempio, un SubjectCode di 8.1.1 e un ReasonCode di 3.8 indicano che l'EID è vincolato a un altro dispositivo.