Interfejsy API eUICC udostępniają kody błędów, które pomagają aplikacjom i użytkownikom rozwiązywać problemy związane z pobieraniem, włączaniem, wyłączaniem i usuwaniem profili eSIM.
Obsługa błędów
Gdy podczas wywoływania interfejsu API eUICC wystąpi błąd, dostarczane jest oczekujące wywołanie zwrotne, a kluczem do uzyskania szczegółowego kodu błędu jest EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE
. Począwszy od Androida 11, w wynikowej intencji uwzględniane są następujące cztery klucze i wartości:
-
EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE
: Zawiera informacje o tym, co poszło nie tak. Na przykład pobranie lub usunięcie profilu eSIM. To pole nigdy nie jest puste. EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE
: Informacje o przyczynie wystąpienia błędu. Na przykład upłynął limit czasu żądania lub urządzenie jest zablokowane przez operatora. To pole nie jest wypełniane w następujących przypadkach:- Kod operacji to
OPERATION_SMDX_SUBJECT_REASON_CODE
. - Ten błąd jest błędem niskiego poziomu, takim jak
IOException
lubInterruptedException
.
- Kod operacji to
EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE
: Używany zEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE
, które razem dostarczają kod podmiotu[5.2.6.1] i kod przyczyny[5.2.6.2] z GSMA (SGP.22 v2.2). To pole jest wypełniane tylko wtedy, gdy kod operacji toOPERATION_SMDX_SUBJECT_REASON_CODE
.EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE
: Używany zEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE
, które razem dostarczają SubjectCode[5.2.6.1] i ReasonCode[5.2.6.2] z GSMA (SGP.22 v2.2). To pole jest wypełniane tylko wtedy, gdy kod operacji toOPERATION_SMDX_SUBJECT_REASON_CODE
.
Te cztery wartości pozwalają wywołującemu API eUICC na indywidualną obsługę określonych błędów. Poniżej znajduje się przykład postępowania z tymi błędami.
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.
}
Obsługiwane kombinacje operacji i kodów błędów
W poniższej tabeli opisano obsługiwaną kombinację kodów operacji i błędów zwracanych przez asystenta profilu lokalnego (LPA).
Kombinacje operacji i kodów błędów | |||
---|---|---|---|
Kod operacji | Kod błędu | Opis | |
OPERATION_SYSTEM | Nie dotyczy | Wystąpił błąd wewnętrzny. Na przykład wątek został przerwany lub wystąpił błąd IOException . | |
OPERATION_SIM_SLOT | Nie dotyczy | Wystąpił błąd wewnętrzny podczas wykonywania operacji na gnieździe SIM. | |
ERROR_TIME_OUT | Upłynął limit czasu podczas próby wykonania operacji na gnieździe SIM. | ||
ERROR_EUICC_MISSING | Na urządzeniu nie jest dostępny ani aktywny żaden eUICC. | ||
OPERATION_EUICC_CARD | Nie dotyczy | Wystąpił błąd wewnętrzny podczas wykonywania operacji eUICC. | |
ERROR_UNSUPPORTED_VERSION | Wersja eUICC (chip) i wersja EuiccCard (oprogramowanie) nie są kompatybilne. | ||
ERROR_EUICC_MISSING | W urządzeniu nie ma dostępnej karty SIM. Na przykład LPA nie może wykryć karty SIM. | ||
OPERATION_SMDX | Nie dotyczy | Wystąpił błąd wewnętrzny podczas wykonywania operacji SM-DP+/SM-DS. | |
ERROR_ADDRESS_MISSING | Brak adresu SM-DP+ do pobrania profilu. | ||
ERROR_INVALID_CONFIRMATION_CODE | Wystąpił błąd podczas analizowania kodu aktywacyjnego (nieprawidłowy format). | ||
ERROR_CERTIFICATE_ERROR | Błąd magazynu kluczy lub certyfikatu, gdy jest używany w połączeniu TLS w celu weryfikacji. | ||
ERROR_NO_PROFILES_AVAILABLE | Brak dostępnych profili w SM-DP+. | ||
ERROR_CONNECTION_ERROR | Nie można utworzyć połączenia z serwerem. | ||
ERROR_INVALID_RESPONSE | Nieprawidłowa odpowiedź z serwera SM-DP+/SM-DS. | ||
OPERATION_SWITCH | Nie dotyczy | Wystąpił błąd wewnętrzny podczas wykonywania operacji przełączania. | |
ERROR_CARRIER_LOCKED | Nie można zmienić profilu, ponieważ urządzenie jest zablokowane przez operatora (zablokowana karta SIM). | ||
OPERATION_DOWNLOAD | Nie dotyczy | Wystąpił błąd wewnętrzny podczas operacji pobierania. | |
ERROR_DISALLOWED_BY_PPR | Tabela autoryzacji reguł w eUICC ma wartość null lub pobieranie jest zabronione przez regułę polityki profilu. | ||
ERROR_INVALID_ACTIVATION_CODE | Wystąpił błąd podczas analizowania kodu aktywacyjnego (nieprawidłowy format) lub podczas próby pobrania bez kodu aktywacyjnego. | ||
ERROR_CARRIER_LOCKED | Nie można pobierać, ponieważ urządzenie jest zablokowane przez operatora (zablokowana karta SIM). | ||
ERROR_INCOMPATIBLE_CARRIER | Operator znajduje się na czarnej liście i LPA nie może pobrać profilu z SM-DP+/SM-DS. | ||
ERROR_OPERATION_BUSY | Trwa pobieranie profilu i nie są dozwolone żadne inne działania, które mogłyby spowodować zmianę stanu karty SIM. | ||
OPERATION_METADATA | Nie dotyczy | Wystąpił błąd wewnętrzny podczas wykonywania operacji na metadanych. | |
ERROR_INVALID_ACTIVATION_CODE | Metadane subskrypcji są puste lub kod aktywacyjny w metadanych subskrypcji jest pusty lub nieprawidłowy. | ||
ERROR_INCOMPATIBLE_CARRIER | Operator znajduje się na czarnej liście i LPA nie może pobrać profilu tego operatora z SM-DP+/SM-DS. | ||
OPERATION_EUICC_GSMA | Nie dotyczy | Wystąpił błąd wewnętrzny podczas wykonywania operacji eUICC GSMA. | |
ERROR_INSTALL_PROFILE | Błąd eUICC podczas próby zainstalowania profilu. Na przykład profil już istnieje lub identyfikator ICCID nie jest zgodny. | ||
ERROR_EUICC_INSUFFICIENT_MEMORY | Błąd eUICC podczas próby zainstalowania profilu. Za mało pamięci w eUICC. | ||
ERROR_DISALLOWED_BY_PPR | Błąd eUICC podczas próby zainstalowania profilu. Niedozwolone przez regułę zasad profilu. | ||
OPERATION_APDU | Nie dotyczy | Wystąpił błąd wewnętrzny podczas wykonywania operacji APDU. | |
OPERATION_HTTP | 1-999 | Kod błędu to wartość błędu HTTP. | |
Kod operacji | Kod tematu | Kod powodu | Opis |
OPERATION_SMDX_SUBJECT_REASON_CODE | Ciąg zawiera 3 cyfry oddzielone kropką, bez zer wiodących. Na przykład 8.1.1 . | Ciąg zawiera 3 cyfry oddzielone kropką, bez zer wiodących. Na przykład 3.8 . | Kod podmiotu [5.2.6.1] i kod przyczyny [5.2.6.2] z GSMA (SGP.22 v2.2). Na przykład kod podmiotu 8.1.1 i kod przyczyny 3.8 oznaczają, że identyfikator EID jest powiązany z innym urządzeniem. |