Menangani error
Saat terjadi error saat memanggil eUICC API, callback intent tertunda akan diberikan dan
EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE
digunakan sebagai kunci untuk mendapatkan kode error mendetail. Mulai dari Android 11, empat kunci dan nilai berikut disertakan dalam intent yang dihasilkan:
EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE: Memberikan informasi tentang masalah yang terjadi. Misalnya, mendownload atau menghapus profil eSIM. Kolom ini tidak pernah kosong.EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE: Informasi tentang penyebab error terjadi. Misalnya, permintaan kehabisan waktu atau perangkat dikunci oleh operator. Kolom ini tidak diisi dalam kasus berikut:- Kode operasinya adalah
OPERATION_SMDX_SUBJECT_REASON_CODE. - Errornya adalah error tingkat rendah seperti
IOExceptionatauInterruptedException.
- Kode operasinya adalah
EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE: Digunakan denganEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE, yang bersama-sama memberikan SubjectCode[5.2.6.1] dan ReasonCode[5.2.6.2] dari GSMA (SGP.22 v2.2). Kolom ini hanya diisi jika kode operasinya adalahOPERATION_SMDX_SUBJECT_REASON_CODE.EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE: Digunakan denganEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE, yang bersama-sama memberikan SubjectCode[5.2.6.1] dan ReasonCode[5.2.6.2] dari GSMA (SGP.22 v2.2). Kolom ini hanya diisi jika kode operasinya adalahOPERATION_SMDX_SUBJECT_REASON_CODE.
Keempat nilai ini memungkinkan pemanggil eUICC API menangani error tertentu secara individual. Berikut adalah contoh cara menangani error ini.
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 kode operasi dan error yang didukung
Tabel berikut menjelaskan kombinasi kode operasi dan error yang didukung yang ditampilkan dari asisten profil lokal (LPA).
| Kombinasi kode operasi dan error | |||
|---|---|---|---|
| Kode operasi | Kode error | Deskripsi | |
OPERATION_SYSTEM |
Tidak berlaku | Terjadi error internal. Misalnya, thread terganggu atau terjadi error IOException. |
|
OPERATION_SIM_SLOT |
Tidak berlaku | Terjadi error internal saat menjalankan operasi slot SIM. | |
ERROR_TIME_OUT |
Kehabisan waktu saat mencoba menjalankan operasi slot SIM. | ||
ERROR_EUICC_MISSING |
Tidak ada eUICC yang tersedia atau aktif di perangkat. | ||
OPERATION_EUICC_CARD |
Tidak berlaku | Terjadi error internal saat menjalankan operasi eUICC. | |
ERROR_UNSUPPORTED_VERSION |
Versi eUICC (chip) dan versi EuiccCard (software) tidak kompatibel. | ||
ERROR_EUICC_MISSING |
Tidak ada kartu SIM yang tersedia di perangkat. Misalnya, LPA tidak dapat mendeteksi kartu SIM. | ||
OPERATION_SMDX |
Tidak berlaku | Terjadi error internal saat menjalankan operasi SM-DP+/SM-DS. | |
ERROR_ADDRESS_MISSING |
Tidak ada alamat SM-DP+ untuk mendownload profil. | ||
ERROR_INVALID_CONFIRMATION_CODE |
Terjadi error saat mengurai kode aktivasi (format tidak valid). | ||
ERROR_CERTIFICATE_ERROR |
Error 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 |
Tidak berlaku | Terjadi error internal saat menjalankan operasi pengalihan. | |
ERROR_CARRIER_LOCKED |
Tidak diizinkan untuk mengalihkan profil karena perangkat dikunci oleh operator (SIM dikunci). | ||
OPERATION_DOWNLOAD |
Tidak berlaku | Terjadi error internal saat menjalankan operasi download. | |
ERROR_DISALLOWED_BY_PPR |
Tabel Otorisasi Aturan di eUICC adalah null atau download tidak diizinkan oleh aturan kebijakan profil. | ||
ERROR_INVALID_ACTIVATION_CODE |
Terjadi error saat mengurai kode aktivasi (format tidak valid) atau mencoba mendownload tanpa kode aktivasi. | ||
ERROR_CARRIER_LOCKED |
Tidak diizinkan untuk mendownload karena perangkat dikunci oleh operator (SIM dikunci). | ||
ERROR_INCOMPATIBLE_CARRIER |
Operator berada dalam daftar blokir dan LPA tidak dapat mendownload profil dari SM-DP+/SM-DS. | ||
ERROR_OPERATION_BUSY |
Download profil sedang berlangsung dan tidak ada tindakan lain yang dapat memicu perubahan status SIM yang diizinkan. | ||
OPERATION_METADATA |
Tidak berlaku | Terjadi error 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 blokir dan LPA tidak dapat mendownload profil operator ini dari SM-DP+/SM-DS. | ||
OPERATION_EUICC_GSMA |
Tidak berlaku | Terjadi error internal saat menjalankan operasi eUICC GSMA. | |
ERROR_INSTALL_PROFILE |
Error dengan eUICC saat mencoba menginstal profil. Misalnya, profil sudah ada atau ICCID tidak cocok. | ||
ERROR_EUICC_INSUFFICIENT_MEMORY |
Error dengan eUICC saat mencoba menginstal profil. Memori tidak cukup di eUICC. | ||
ERROR_DISALLOWED_BY_PPR |
Error dengan eUICC saat mencoba menginstal profil. Tidak diizinkan oleh aturan kebijakan profil. | ||
OPERATION_APDU |
Tidak berlaku | Terjadi error internal saat menjalankan operasi APDU. | |
OPERATION_HTTP |
1-999 |
Kode error adalah nilai error HTTP. | |
| Kode operasi | Kode subjek | Kode alasan | Deskripsi |
OPERATION_SMDX_SUBJECT_REASON_CODE |
String berisi 3 digit yang dipisahkan oleh titik, tanpa angka nol di awal. Misalnya, 8.1.1. |
String berisi 3 digit yang dipisahkan oleh titik tanpa angka nol di awal. 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. |