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 scaricamento, all'abilitazione, alla disattivazione ed all'eliminazione dei profili eSIM.

Gestire gli errori

Quando si verifica un errore durante la chiamata all'API eUICC, viene fornito un callback di intent in attesa e EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE viene utilizzato come chiave per ottenere il codice di errore dettagliato. A partire da Android 11, le seguenti quattro chiavi e valori 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 operazioni e codici di errore supportate

La seguente tabella descrive la combinazione supportata di operazioni e codici di errore restituiti dall'assistente per i profili locali (LPA).

Combinazioni di operazioni e codici di errore
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 relativa allo slot SIM.
ERROR_TIME_OUT Si è verificato un timeout durante il tentativo di eseguire un'operazione relativa allo slot SIM.
ERROR_EUICC_MISSING Nessuna eUICC è disponibile o attiva sul dispositivo.
OPERATION_EUICC_CARD Non applicabile Si è verificato un errore interno durante l'esecuzione di un'operazione eUICC.
ERROR_UNSUPPORTED_VERSION La versione eUICC (chip) e la versione 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 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 del server SM-DP+/SM-DS.
OPERATION_SWITCH Non applicabile Si è verificato un errore interno durante l'esecuzione di un'operazione di switch.
ERROR_CARRIER_LOCKED Non puoi cambiare profilo perché il dispositivo è bloccato dall'operatore (bloccato con 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 nella eUICC è nulla o il download non è consentito dalla regola del criterio 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 (SIM bloccata).
ERROR_INCOMPATIBLE_CARRIER L'operatore è nella lista nera 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 o il codice di attivazione al loro interno è vuoto o non valido.
ERROR_INCOMPATIBLE_CARRIER L'operatore è nella lista nera e l'LPA non può scaricare il relativo profilo da SM-DP+/SM-DS.
OPERATION_EUICC_GSMA Non applicabile Si è verificato un errore interno durante l'esecuzione di un'operazione GSMA eUICC.
ERROR_INSTALL_PROFILE Errore con eUICC durante il tentativo di installazione del profilo. Ad esempio, il profilo esiste già o l'ICCID non corrisponde.
ERROR_EUICC_INSUFFICIENT_MEMORY Errore con eUICC durante il tentativo di installazione del profilo. Memoria insufficiente sull'eUICC.
ERROR_DISALLOWED_BY_PPR Errore con eUICC durante il tentativo di installazione del profilo. Non consentito dalla regola del criterio 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 argomento 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] da GSMA (SGP.22 v2.2). Ad esempio, un SubjectCode pari a 8.1.1 e un ReasonCode pari a 3.8 indicano che l'EID è associato a un altro dispositivo.