Interfejsy eUICC API 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 eUICC API wystąpi błąd, podawane jest wywołanie zwrotne oczekującego zamiaru, a EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE jest używany jako klucz do uzyskania szczegółowego kodu błędu. Od Androida 11 w wynikowym intencie znajdują się te 4 klucze i wartości:
EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE: zawiera informacje o tym, co poszło nie tak. Na przykład pobieranie lub usuwanie profilu eSIM. To pole nigdy nie jest puste.EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE: informacje o przyczynie błędu. Na przykład żądanie przekroczyło limit czasu lub urządzenie jest zablokowane przez operatora. To pole nie jest wypełniane w tych przypadkach:- Kod operacji to 
OPERATION_SMDX_SUBJECT_REASON_CODE. - Błąd jest błędem niskiego poziomu, np. 
IOExceptionlubInterruptedException. 
- Kod operacji to 
 EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE: używany z parametremEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE, który razem z nim dostarcza wartości 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.EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE: używany z parametremEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE, który razem z nim dostarcza wartości 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 4 wartości umożliwiają wywołującemu interfejs eUICC API indywidualne obsługiwanie określonych błędów. Poniżej znajdziesz przykład, jak sobie z nimi radzić.
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 tabeli poniżej opisano obsługiwane kombinacje operacji i kodów 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 | Podczas wykonywania operacji na gnieździe SIM wystąpił błąd wewnętrzny. | |
ERROR_TIME_OUT | 
Upłynął limit czasu podczas próby wykonania operacji na gnieździe karty SIM. | ||
ERROR_EUICC_MISSING | 
Na urządzeniu nie ma karty eUICC lub jest ona nieaktywna. | ||
OPERATION_EUICC_CARD | 
Nie dotyczy | Podczas wykonywania operacji na karcie eUICC wystąpił błąd wewnętrzny. | |
ERROR_UNSUPPORTED_VERSION | 
Wersja eUICC (chip) i wersja EuiccCard (oprogramowanie) są niezgodne. | ||
ERROR_EUICC_MISSING | 
W urządzeniu nie ma karty SIM. Na przykład LPA nie może wykryć karty SIM. | ||
OPERATION_SMDX | 
Nie dotyczy | Podczas wykonywania operacji SM-DP+/SM-DS wystąpił błąd wewnętrzny. | |
ERROR_ADDRESS_MISSING | 
Brak adresu SM-DP+ do pobrania profilu. | ||
ERROR_INVALID_CONFIRMATION_CODE | 
Podczas analizowania kodu aktywacyjnego wystąpił błąd (nieprawidłowy format). | ||
ERROR_CERTIFICATE_ERROR | 
Błąd magazynu kluczy lub certyfikatu podczas używania w połączeniu TLS do weryfikacji. | ||
ERROR_NO_PROFILES_AVAILABLE | 
Brak dostępnych profili z SM-DP+. | ||
ERROR_CONNECTION_ERROR | 
Nie można nawiązać połączenia z serwerem. | ||
ERROR_INVALID_RESPONSE | 
Nieprawidłowa odpowiedź z serwera SM-DP+/SM-DS. | ||
OPERATION_SWITCH | 
Nie dotyczy | Podczas wykonywania operacji przełączania wystąpił błąd wewnętrzny. | |
ERROR_CARRIER_LOCKED | 
Nie można przełączyć profilu, ponieważ urządzenie jest zablokowane przez operatora (blokada karty SIM). | ||
OPERATION_DOWNLOAD | 
Nie dotyczy | Podczas pobierania wystąpił błąd wewnętrzny. | |
ERROR_DISALLOWED_BY_PPR | 
Tabela autoryzacji reguł na karcie eUICC jest pusta lub pobieranie jest niedozwolone przez regułę zasad profilu. | ||
ERROR_INVALID_ACTIVATION_CODE | 
Podczas analizowania kodu aktywacyjnego wystąpił błąd (nieprawidłowy format) lub podjęto próbę pobrania bez kodu aktywacyjnego. | ||
ERROR_CARRIER_LOCKED | 
Nie można pobrać, ponieważ urządzenie jest zablokowane przez operatora (blokada karty SIM). | ||
ERROR_INCOMPATIBLE_CARRIER | 
Operator znajduje się na czarnej liście, a LPA nie może pobrać profilu z platformy SM-DP+/SM-DS. | ||
ERROR_OPERATION_BUSY | 
Trwa pobieranie profilu. Nie są dozwolone żadne inne działania, które mogłyby spowodować zmiany stanu karty SIM. | ||
OPERATION_METADATA | 
Nie dotyczy | Podczas wykonywania operacji na metadanych wystąpił błąd wewnętrzny. | |
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, a LPA nie może pobrać jego profilu z platformy SM-DP+/SM-DS. | ||
OPERATION_EUICC_GSMA | 
Nie dotyczy | Podczas wykonywania operacji GSMA na karcie eUICC wystąpił błąd wewnętrzny. | |
ERROR_INSTALL_PROFILE | 
Błąd związany z eUICC podczas próby zainstalowania profilu. Na przykład profil już istnieje lub numer ICCID jest niezgodny. | ||
ERROR_EUICC_INSUFFICIENT_MEMORY | 
Błąd związany z eUICC podczas próby zainstalowania profilu. Za mało pamięci na karcie eUICC. | ||
ERROR_DISALLOWED_BY_PPR | 
Błąd związany z eUICC podczas próby zainstalowania profilu. Niedozwolone przez regułę zasad profilu. | ||
OPERATION_APDU | 
Nie dotyczy | Podczas wykonywania operacji APDU wystąpił błąd wewnętrzny. | |
OPERATION_HTTP | 
1-999 | 
Kod błędu to wartość błędu HTTP. | |
| Kod operacji | Kod przedmiotu | Kod przyczyny | Opis | 
OPERATION_SMDX_SUBJECT_REASON_CODE | 
Ciąg znaków zawiera 3 cyfry oddzielone kropką i nie ma zer na początku. Na przykład: 8.1.1. | 
Ciąg znaków zawiera 3 cyfry oddzielone kropką bez zer na początku. Na przykład: 3.8. | 
SubjectCode[5.2.6.1] i ReasonCode[5.2.6.2] z GSMA (SGP.22 v2.2). Na przykład SubjectCode 8.1.1 i ReasonCode 3.8 oznaczają, że identyfikator EID jest powiązany z innym urządzeniem. |