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:
EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE
: fornisce informazioni su cosa non ha funzionato. ad esempio il download o l'eliminazione di un profilo eSIM. Questo campo non è mai vuoto.EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE
: Informazioni sul motivo dell'errore. Ad esempio, la richiesta è scaduta o il dispositivo è bloccato dall'operatore. Questo campo non viene compilato nei seguenti casi:- Il codice dell'operazione è
OPERATION_SMDX_SUBJECT_REASON_CODE
. - L'errore è di basso livello, ad esempio
IOException
oInterruptedException
.
- Il codice dell'operazione è
EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE
: viene utilizzato conEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE
, che insieme forniscono SubjectCode[5.2.6.1] e ReasonCode[5.2.6.2] da GSMA (SGP.22 v2.2). Questo campo viene compilato solo quando il codice operazione èOPERATION_SMDX_SUBJECT_REASON_CODE
.EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE
: viene utilizzato conEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE
, che insieme forniscono SubjectCode[5.2.6.1] e ReasonCode[5.2.6.2] da GSMA (SGP.22 v2.2). Questo campo viene compilato solo quando il codice operazione èOPERATION_SMDX_SUBJECT_REASON_CODE
.
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. |