จัดการข้อผิดพลาด eUICC API

eUICC API มีรหัสข้อผิดพลาดเพื่อช่วยแอปและผู้ใช้แก้ปัญหาเกี่ยวกับการดาวน์โหลด การเปิดใช้ การปิดใช้ และการลบโปรไฟล์ eSIM

จัดการข้อผิดพลาด

เมื่อเกิดข้อผิดพลาดขณะเรียกใช้ eUICC API ระบบจะระบุการเรียกกลับ Intent ที่รอดำเนินการและEXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODEจะใช้เป็นคีย์ในการรับรหัสข้อผิดพลาดแบบละเอียด ตั้งแต่ Android 11 เป็นต้นไป คีย์และค่า 4 รายการต่อไปนี้จะรวมอยู่ใน 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 เท่านั้น

ค่าทั้ง 4 รายการนี้ช่วยให้ผู้เรียกใช้ 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.
}

การดำเนินการและชุดค่าผสมรหัสข้อผิดพลาดที่รองรับ

ตารางต่อไปนี้อธิบายการรวมการดำเนินการและรหัสข้อผิดพลาดที่รองรับซึ่งแสดงผลจากเครื่องมือช่วยจัดการโปรไฟล์ในเครื่อง (LPA)

การดำเนินการและรหัสข้อผิดพลาดที่รวมกัน
รหัสการดำเนินการ รหัสข้อผิดพลาด คำอธิบาย
OPERATION_SYSTEM ไม่เกี่ยวข้อง เกิดข้อผิดพลาดภายใน เช่น มีการขัดจังหวะชุดข้อความหรือเกิดข้อผิดพลาด IOException
OPERATION_SIM_SLOT ไม่เกี่ยวข้อง เกิดข้อผิดพลาดภายในขณะดำเนินการกับช่อง SIM
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 หลักที่คั่นด้วยจุดโดยไม่มีเลข 0 นำหน้า เช่น 8.1.1 สตริงมีตัวเลข 3 หลักที่คั่นด้วยจุดโดยไม่มีเลข 0 นําหน้า เช่น 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 เชื่อมโยงกับอุปกรณ์อื่น