eUICC API มอบรหัสข้อผิดพลาดเพื่อช่วยแอพและผู้ใช้แก้ไขปัญหาที่เกี่ยวข้องกับการดาวน์โหลด การเปิดใช้งาน การปิดใช้ และการลบโปรไฟล์ eSIM
การจัดการข้อผิดพลาด
เมื่อมีข้อผิดพลาดเกิดขึ้นขณะเรียก eUICC API จะมีการระบุการเรียกกลับ Intent ที่รอดำเนินการ และ EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE
จะถูกใช้เป็นคีย์ในการรับรหัสข้อผิดพลาดโดยละเอียด เริ่มต้นจาก Android 11 คีย์และค่าสี่รายการต่อไปนี้จะรวมอยู่ใน Intent ผลลัพธ์:
-
EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE
: ให้ข้อมูลเกี่ยวกับสิ่งที่ผิดพลาด เช่น การดาวน์โหลดหรือการลบโปรไฟล์ eSIM ฟิลด์นี้ไม่เคยว่างเปล่า EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE
: ข้อมูลเกี่ยวกับสาเหตุที่เกิดข้อผิดพลาด ตัวอย่างเช่น คำขอหมดเวลาหรืออุปกรณ์ถูกล็อคโดยผู้ให้บริการ ช่องนี้จะไม่ได้รับการเติมข้อมูลในกรณีต่อไปนี้:- รหัสการดำเนินการคือ
OPERATION_SMDX_SUBJECT_REASON_CODE
- ข้อผิดพลาดนี้เป็นข้อผิดพลาดระดับต่ำ เช่น
IOException
หรือInterruptedException
- รหัสการดำเนินการคือ
EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE
: ใช้กับEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE
ซึ่งร่วมกันให้ SubjectCode[5.2.6.1] และ ReasonCode[5.2.6.2] จาก GSMA (SGP.22 v2.2) ฟิลด์นี้จะถูกเติมเฉพาะเมื่อโค้ดการดำเนินการคือOPERATION_SMDX_SUBJECT_REASON_CODE
EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE
: ใช้กับEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE
ซึ่งร่วมกันให้ SubjectCode[5.2.6.1] และ ReasonCode[5.2.6.2] จาก GSMA (SGP.22 v2.2) ฟิลด์นี้จะถูกเติมเฉพาะเมื่อโค้ดการดำเนินการคือOPERATION_SMDX_SUBJECT_REASON_CODE
ค่าสี่ค่าเหล่านี้ช่วยให้ผู้เรียก eUICC API สามารถจัดการข้อผิดพลาดเฉพาะทีละรายการได้ ต่อไปนี้เป็นตัวอย่างของวิธีจัดการกับข้อผิดพลาดเหล่านี้
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.
}
การดำเนินการที่รองรับและการรวมรหัสข้อผิดพลาด
ตารางต่อไปนี้อธิบายการผสมผสานการทำงานที่ได้รับการสนับสนุนและรหัสข้อผิดพลาดที่ส่งคืนจาก Local Profile Assistant (LPA)
การผสมการทำงานและรหัสข้อผิดพลาด | |||
---|---|---|---|
รหัสการดำเนินงาน | รหัสข้อผิดพลาด | คำอธิบาย | |
OPERATION_SYSTEM | ไม่สามารถใช้ได้ | เกิดข้อผิดพลาดภายใน ตัวอย่างเช่น เธรดถูกขัดจังหวะหรือมีข้อผิดพลาด IOException เกิดขึ้น | |
OPERATION_SIM_SLOT | ไม่สามารถใช้ได้ | เกิดข้อผิดพลาดภายในขณะดำเนินการช่องใส่ซิม | |
ERROR_TIME_OUT | หมดเวลาขณะพยายามดำเนินการใช้งานช่องใส่ซิม | ||
ERROR_EUICC_MISSING | ไม่มี eUICC ที่พร้อมใช้งานหรือใช้งานอยู่ในอุปกรณ์ | ||
OPERATION_EUICC_CARD | ไม่สามารถใช้ได้ | เกิดข้อผิดพลาดภายในขณะดำเนินการ eUICC | |
ERROR_UNSUPPORTED_VERSION | เวอร์ชัน eUICC (ชิป) และเวอร์ชัน EuiccCard (ซอฟต์แวร์) เข้ากันไม่ได้ | ||
ERROR_EUICC_MISSING | ไม่มีซิมการ์ดในอุปกรณ์ เช่น LPA ตรวจไม่พบซิมการ์ด | ||
OPERATION_SMDX | ไม่สามารถใช้ได้ | เกิดข้อผิดพลาดภายในขณะดำเนินการ SM-DP+/SM-DS | |
ERROR_ADDRESS_MISSING | ไม่มีที่อยู่ SM-DP+ สำหรับดาวน์โหลดโปรไฟล์ | ||
ERROR_INVALID_CONFIRMATION_CODE | เกิดข้อผิดพลาดขณะแยกวิเคราะห์รหัสเปิดใช้งาน (รูปแบบไม่ถูกต้อง) | ||
ERROR_CERTIFICATE_ERROR | ข้อผิดพลาดของที่เก็บคีย์หรือใบรับรองเมื่อใช้ในการเชื่อมต่อ TLS สำหรับการตรวจสอบ | ||
ERROR_NO_PROFILES_AVAILABLE | ไม่มีโปรไฟล์จาก SM-DP+ | ||
ERROR_CONNECTION_ERROR | ไม่สามารถสร้างการเชื่อมต่อกับเซิร์ฟเวอร์ | ||
ERROR_INVALID_RESPONSE | การตอบสนองไม่ถูกต้องจากเซิร์ฟเวอร์ SM-DP+/SM-DS | ||
OPERATION_SWITCH | ไม่สามารถใช้ได้ | เกิดข้อผิดพลาดภายในขณะดำเนินการสวิตช์ | |
ERROR_CARRIER_LOCKED | ไม่ได้รับอนุญาตให้เปลี่ยนโปรไฟล์เนื่องจากอุปกรณ์ถูกล็อคโดยผู้ให้บริการ (ล็อคซิม) | ||
OPERATION_DOWNLOAD | ไม่สามารถใช้ได้ | เกิดข้อผิดพลาดภายในขณะดำเนินการดาวน์โหลด | |
ERROR_DISALLOWED_BY_PPR | ตารางการอนุญาตกฎบน eUICC เป็นโมฆะหรือการดาวน์โหลดไม่ได้รับอนุญาตตามกฎนโยบายโปรไฟล์ | ||
ERROR_INVALID_ACTIVATION_CODE | เกิดข้อผิดพลาดขณะแยกวิเคราะห์รหัสเปิดใช้งาน (รูปแบบไม่ถูกต้อง) หรือพยายามดาวน์โหลดโดยไม่มีรหัสเปิดใช้งาน | ||
ERROR_CARRIER_LOCKED | ไม่ได้รับอนุญาตให้ดาวน์โหลดเนื่องจากอุปกรณ์ถูกล็อคโดยผู้ให้บริการ (ล็อคซิม) | ||
ERROR_INCOMPATIBLE_CARRIER | ผู้ให้บริการอยู่ในบัญชีดำและ LPA ไม่สามารถดาวน์โหลดโปรไฟล์จาก SM-DP+/SM-DS | ||
ERROR_OPERATION_BUSY | อยู่ระหว่างการดาวน์โหลดโปรไฟล์ และไม่อนุญาตให้ดำเนินการอื่นใดที่อาจกระตุ้นให้เกิดการเปลี่ยนแปลงสถานะ SIM | ||
OPERATION_METADATA | ไม่สามารถใช้ได้ | เกิดข้อผิดพลาดภายในขณะดำเนินการดำเนินการข้อมูลเมตา | |
ERROR_INVALID_ACTIVATION_CODE | ข้อมูลเมตาการสมัครสมาชิกว่างเปล่าหรือรหัสเปิดใช้งานภายในข้อมูลเมตาการสมัครสมาชิกว่างเปล่าหรือไม่ถูกต้อง | ||
ERROR_INCOMPATIBLE_CARRIER | ผู้ให้บริการอยู่ในบัญชีดำและ LPA ไม่สามารถดาวน์โหลดโปรไฟล์ของผู้ให้บริการรายนี้จาก SM-DP+/SM-DS | ||
OPERATION_EUICC_GSMA | ไม่สามารถใช้ได้ | เกิดข้อผิดพลาดภายในขณะดำเนินการ eUICC GSMA | |
ERROR_INSTALL_PROFILE | เกิดข้อผิดพลาดกับ eUICC ขณะพยายามติดตั้งโปรไฟล์ ตัวอย่างเช่น มีโปรไฟล์อยู่แล้วหรือ ICCID ไม่ตรงกัน | ||
ERROR_EUICC_INSUFFICIENT_MEMORY | เกิดข้อผิดพลาดกับ eUICC ขณะพยายามติดตั้งโปรไฟล์ หน่วยความจำไม่เพียงพอบน eUICC | ||
ERROR_DISALLOWED_BY_PPR | เกิดข้อผิดพลาดกับ eUICC ขณะพยายามติดตั้งโปรไฟล์ ไม่ได้รับอนุญาตตามกฎนโยบายโปรไฟล์ | ||
OPERATION_APDU | ไม่สามารถใช้ได้ | เกิดข้อผิดพลาดภายในขณะดำเนินการ APDU | |
OPERATION_HTTP | 1-999 | รหัสข้อผิดพลาดคือค่าความผิดพลาด HTTP | |
รหัสการดำเนินงาน | รหัสหัวเรื่อง | รหัสเหตุผล | คำอธิบาย |
OPERATION_SMDX_SUBJECT_REASON_CODE | สตริงประกอบด้วยตัวเลข 3 หลักคั่นด้วยจุด โดยไม่มีเลขศูนย์นำหน้า ตัวอย่างเช่น 8.1.1 | สตริงประกอบด้วยตัวเลข 3 หลักคั่นด้วยจุดโดยไม่มีศูนย์นำหน้า ตัวอย่างเช่น 3.8 . | SubjectCode[5.2.6.1] และ ReasonCode[5.2.6.2] จาก GSMA (SGP.22 v2.2) ตัวอย่างเช่น SubjectCode 8.1.1 และ ReasonCode 3.8 หมายความว่า EID ถูกผูกไว้กับอุปกรณ์อื่น |