API eUICC menyediakan kode kesalahan untuk membantu aplikasi dan pengguna memecahkan masalah yang terkait dengan mengunduh, mengaktifkan, menonaktifkan, dan menghapus profil eSIM.
Menangani kesalahan
Saat terjadi kesalahan saat memanggil API eUICC, panggilan balik maksud tertunda disediakan dan EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE
digunakan sebagai kunci untuk mendapatkan kode kesalahan terperinci. Mulai dari Android 11, empat kunci dan nilai berikut disertakan dalam maksud yang dihasilkan:
-
EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE
: Memberikan informasi tentang apa yang salah. Misalnya, mengunduh atau menghapus profil eSIM. Bidang ini tidak pernah kosong. EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE
: Informasi tentang mengapa kesalahan terjadi. Misalnya, waktu permintaan habis atau perangkat terkunci oleh operator. Bidang ini tidak diisi dalam kasus berikut:- Kode operasinya adalah
OPERATION_SMDX_SUBJECT_REASON_CODE
. - Kesalahannya adalah kesalahan tingkat rendah seperti
IOException
atauInterruptedException
.
- Kode operasinya adalah
EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE
: Digunakan denganEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE
, yang bersama-sama menyediakan SubjectCode[5.2.6.1] dan ReasonCode[5.2.6.2] dari GSMA (SGP.22 v2.2). Bidang ini diisi hanya jika kode operasinya adalahOPERATION_SMDX_SUBJECT_REASON_CODE
.EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE
: Digunakan denganEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE
, yang bersama-sama menyediakan SubjectCode[5.2.6.1] dan ReasonCode[5.2.6.2] dari GSMA (SGP.22 v2.2). Bidang ini diisi hanya jika kode operasinya adalahOPERATION_SMDX_SUBJECT_REASON_CODE
.
Keempat nilai ini memungkinkan pemanggil API eUICC untuk menangani kesalahan tertentu satu per satu. Berikut ini adalah contoh cara menangani kesalahan tersebut.
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.
}
Operasi yang didukung dan kombinasi kode kesalahan
Tabel berikut menjelaskan kombinasi operasi dan kode kesalahan yang didukung yang dikembalikan dari asisten profil lokal (LPA).
Operasi dan kombinasi kode kesalahan | |||
---|---|---|---|
Kode operasi | Kode kesalahan | Keterangan | |
OPERATION_SYSTEM | Tak dapat diterapkan | Terjadi kesalahan internal. Misalnya, utas terputus atau terjadi kesalahan IOException . | |
OPERATION_SIM_SLOT | Tak dapat diterapkan | Terjadi kesalahan internal saat menjalankan operasi slot SIM. | |
ERROR_TIME_OUT | Waktu habis saat mencoba menjalankan operasi slot SIM. | ||
ERROR_EUICC_MISSING | Tidak ada eUICC yang tersedia atau aktif di perangkat. | ||
OPERATION_EUICC_CARD | Tak dapat diterapkan | Terjadi kesalahan internal saat menjalankan operasi eUICC. | |
ERROR_UNSUPPORTED_VERSION | Versi eUICC (chip) dan versi EuiccCard (perangkat lunak) tidak kompatibel. | ||
ERROR_EUICC_MISSING | Tidak ada kartu SIM yang tersedia di perangkat. Misalnya, LPA tidak dapat mendeteksi kartu SIM. | ||
OPERATION_SMDX | Tak dapat diterapkan | Terjadi kesalahan internal saat menjalankan operasi SM-DP+/SM-DS. | |
ERROR_ADDRESS_MISSING | Tidak ada alamat SM-DP+ untuk mengunduh profil. | ||
ERROR_INVALID_CONFIRMATION_CODE | Terjadi kesalahan saat menguraikan kode aktivasi (format tidak valid). | ||
ERROR_CERTIFICATE_ERROR | Keystore atau kesalahan sertifikat saat digunakan dalam koneksi TLS untuk verifikasi. | ||
ERROR_NO_PROFILES_AVAILABLE | Tidak ada profil yang tersedia dari SM-DP+. | ||
ERROR_CONNECTION_ERROR | Tidak dapat membuat koneksi ke server. | ||
ERROR_INVALID_RESPONSE | Respons tidak valid dari server SM-DP+/SM-DS. | ||
OPERATION_SWITCH | Tak dapat diterapkan | Terjadi kesalahan internal saat menjalankan operasi sakelar. | |
ERROR_CARRIER_LOCKED | Tidak diizinkan untuk beralih profil karena perangkat dikunci oleh operator (SIM terkunci). | ||
OPERATION_DOWNLOAD | Tak dapat diterapkan | Terjadi kesalahan internal saat menjalankan operasi pengunduhan. | |
ERROR_DISALLOWED_BY_PPR | Tabel Otorisasi Aturan di eUICC adalah nol atau unduhan tidak diizinkan oleh aturan kebijakan profil. | ||
ERROR_INVALID_ACTIVATION_CODE | Terjadi kesalahan saat menguraikan kode aktivasi (format tidak valid) atau mencoba mengunduh tanpa kode aktivasi. | ||
ERROR_CARRIER_LOCKED | Tidak diizinkan untuk mengunduh karena perangkat terkunci oleh operator (SIM terkunci). | ||
ERROR_INCOMPATIBLE_CARRIER | Operator berada dalam daftar hitam dan LPA tidak dapat mengunduh profil dari SM-DP+/SM-DS. | ||
ERROR_OPERATION_BUSY | Pengunduhan profil sedang berlangsung dan tidak ada tindakan lain yang dapat memicu perubahan status SIM yang diizinkan. | ||
OPERATION_METADATA | Tak dapat diterapkan | Terjadi kesalahan internal saat menjalankan operasi metadata. | |
ERROR_INVALID_ACTIVATION_CODE | Metadata langganan kosong atau kode aktivasi di dalam metadata langganan kosong atau tidak valid. | ||
ERROR_INCOMPATIBLE_CARRIER | Operator berada dalam daftar hitam dan LPA tidak dapat mengunduh profil operator ini dari SM-DP+/SM-DS. | ||
OPERATION_EUICC_GSMA | Tak dapat diterapkan | Terjadi kesalahan internal saat menjalankan operasi GSMA eUICC. | |
ERROR_INSTALL_PROFILE | Kesalahan dengan eUICC saat mencoba memasang profil. Misalnya, profil sudah ada atau ICCID tidak cocok. | ||
ERROR_EUICC_INSUFFICIENT_MEMORY | Kesalahan dengan eUICC saat mencoba memasang profil. Tidak cukup memori pada eUICC. | ||
ERROR_DISALLOWED_BY_PPR | Kesalahan dengan eUICC saat mencoba memasang profil. Tidak diizinkan oleh aturan kebijakan profil. | ||
OPERATION_APDU | Tak dapat diterapkan | Terjadi kesalahan internal saat menjalankan operasi APDU. | |
OPERATION_HTTP | 1-999 | Kode kesalahan adalah nilai kesalahan HTTP. | |
Kode operasi | Kode subjek | Kode alasan | Keterangan |
OPERATION_SMDX_SUBJECT_REASON_CODE | String berisi 3 digit yang dipisahkan oleh titik, tanpa nol di depan. Misalnya, 8.1.1 . | String berisi 3 digit yang dipisahkan oleh titik tanpa nol di depan. Misalnya, 3.8 . | SubjectCode[5.2.6.1] dan ReasonCode[5.2.6.2] dari GSMA (SGP.22 v2.2). Misalnya, SubjectCode 8.1.1 dan ReasonCode 3.8 berarti EID terikat ke perangkat lain. |