API eUICC menyediakan kode kesalahan untuk membantu aplikasi dan pengguna memecahkan masalah terkait pengunduhan, pengaktifan, penonaktifan, dan penghapusan profil eSIM.
Kesalahan penanganan
Ketika terjadi kesalahan saat memanggil API eUICC, panggilan balik maksud yang tertunda disediakan dan EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE
digunakan sebagai kunci untuk mendapatkan kode kesalahan terperinci. Mulai Android 11, empat kunci dan nilai berikut disertakan dalam maksud yang dihasilkan:
-
EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE
: Memberikan informasi tentang apa yang salah. Misalnya, mendownload atau menghapus profil eSIM. Bidang ini tidak pernah kosong. EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE
: Informasi tentang penyebab 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 hanya diisi bila 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 hanya diisi bila kode operasinya adalahOPERATION_SMDX_SUBJECT_REASON_CODE
.
Keempat nilai ini memungkinkan pemanggil API eUICC 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.
}
Kombinasi operasi dan kode kesalahan yang didukung
Tabel berikut menjelaskan kombinasi operasi dan kode kesalahan yang didukung yang dihasilkan dari asisten profil lokal (LPA).
Kombinasi operasi dan kode kesalahan | |||
---|---|---|---|
Kode operasi | Kode kesalahan | Keterangan | |
OPERATION_SYSTEM | Tak dapat diterapkan | Terjadi kesalahan internal. Misalnya, thread terputus atau terjadi kesalahan IOException . | |
OPERATION_SIM_SLOT | Tak dapat diterapkan | Terjadi kesalahan internal saat menjalankan pengoperasian slot SIM. | |
ERROR_TIME_OUT | Waktu habis saat mencoba menjalankan pengoperasian 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 mengurai kode aktivasi (format tidak valid). | ||
ERROR_CERTIFICATE_ERROR | Kesalahan keystore atau 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 pengoperasian sakelar. | |
ERROR_CARRIER_LOCKED | Tidak diperbolehkan berpindah profil karena perangkat terkunci operator (SIM terkunci). | ||
OPERATION_DOWNLOAD | Tak dapat diterapkan | Terjadi kesalahan internal saat melakukan operasi pengunduhan. | |
ERROR_DISALLOWED_BY_PPR | Tabel Otorisasi Aturan di eUICC adalah null atau pengunduhan 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 diperbolehkan mengunduh karena perangkat terkunci operator (SIM terkunci). | ||
ERROR_INCOMPATIBLE_CARRIER | Operator ada dalam daftar hitam dan LPA tidak dapat mengunduh profil dari SM-DP+/SM-DS. | ||
ERROR_OPERATION_BUSY | Pengunduhan profil sedang berlangsung dan tindakan lain yang dapat memicu perubahan status SIM tidak diperbolehkan. | ||
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 ada 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 eUICC GSMA. | |
ERROR_INSTALL_PROFILE | Terjadi kesalahan dengan eUICC saat mencoba memasang profil. Misalnya profil sudah ada atau ICCID-nya tidak cocok. | ||
ERROR_EUICC_INSUFFICIENT_MEMORY | Terjadi kesalahan dengan eUICC saat mencoba memasang profil. Memori pada eUICC tidak cukup. | ||
ERROR_DISALLOWED_BY_PPR | Terjadi 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 angka nol di depannya. Misalnya, 8.1.1 . | String berisi 3 digit yang dipisahkan oleh titik tanpa nol di depannya. 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. |