API eUICC cung cấp mã lỗi để giúp ứng dụng và người dùng khắc phục sự cố liên quan đến việc tải xuống, bật, tắt và xóa cấu hình eSIM.
Xử lý lỗi
Khi xảy ra lỗi khi gọi API eUICC, lệnh gọi lại có mục đích đang chờ xử lý sẽ được cung cấp và EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE
được sử dụng làm khóa để nhận mã lỗi chi tiết. Bắt đầu từ Android 11, bốn khóa và giá trị sau được đưa vào mục đích tạo ra:
-
EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE
: Cung cấp thông tin về sự cố. Ví dụ: tải xuống hoặc xóa hồ sơ eSIM. Trường này không bao giờ trống. EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE
: Thông tin về lý do xảy ra lỗi. Ví dụ: yêu cầu đã hết thời gian chờ hoặc thiết bị bị nhà mạng khóa. Trường này không được điền trong các trường hợp sau:- Mã hoạt động là
OPERATION_SMDX_SUBJECT_REASON_CODE
. - Lỗi là lỗi cấp độ thấp như
IOException
hoặcInterruptedException
.
- Mã hoạt động là
EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE
: Được sử dụng vớiEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE
, cùng cung cấp Mã chủ đề[5.2.6.1] và Mã lý do[5.2.6.2] từ GSMA (SGP.22 v2.2). Trường này chỉ được điền khi mã thao tác làOPERATION_SMDX_SUBJECT_REASON_CODE
.EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE
: Được sử dụng vớiEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE
, cùng cung cấp Mã chủ đề[5.2.6.1] và Mã lý do[5.2.6.2] từ GSMA (SGP.22 v2.2). Trường này chỉ được điền khi mã thao tác làOPERATION_SMDX_SUBJECT_REASON_CODE
.
Bốn giá trị này cho phép lệnh gọi API eUICC xử lý riêng các lỗi cụ thể. Sau đây là một ví dụ về cách xử lý các lỗi này.
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.
}
Hỗ trợ hoạt động và kết hợp mã lỗi
Bảng sau đây mô tả sự kết hợp hoạt động được hỗ trợ và mã lỗi được trả về từ trợ lý hồ sơ cục bộ (LPA).
Sự kết hợp hoạt động và mã lỗi | |||
---|---|---|---|
Mã hoạt động | Mã lỗi | Sự miêu tả | |
OPERATION_SYSTEM | Không áp dụng | Đã xảy ra lỗi nội bộ. Ví dụ: luồng bị gián đoạn hoặc xảy ra lỗi IOException . | |
OPERATION_SIM_SLOT | Không áp dụng | Đã xảy ra lỗi nội bộ khi thực hiện thao tác trên khe cắm SIM. | |
ERROR_TIME_OUT | Đã hết thời gian chờ khi cố gắng thực hiện thao tác trên khe cắm SIM. | ||
ERROR_EUICC_MISSING | Không có eUICC nào khả dụng hoặc đang hoạt động trên thiết bị. | ||
OPERATION_EUICC_CARD | Không áp dụng | Đã xảy ra lỗi nội bộ khi thực hiện thao tác eUICC. | |
ERROR_UNSUPPORTED_VERSION | Phiên bản eUICC (chip) và phiên bản EuiccCard (phần mềm) không tương thích. | ||
ERROR_EUICC_MISSING | Không có thẻ SIM có sẵn trong thiết bị. Ví dụ: LPA không thể phát hiện thẻ SIM. | ||
OPERATION_SMDX | Không áp dụng | Đã xảy ra lỗi nội bộ khi thực hiện thao tác SM-DP+/SM-DS. | |
ERROR_ADDRESS_MISSING | Không có địa chỉ SM-DP+ để tải xuống hồ sơ. | ||
ERROR_INVALID_CONFIRMATION_CODE | Đã xảy ra lỗi khi phân tích mã kích hoạt (định dạng không hợp lệ). | ||
ERROR_CERTIFICATE_ERROR | Lỗi kho khóa hoặc chứng chỉ khi được sử dụng trong kết nối TLS để xác minh. | ||
ERROR_NO_PROFILES_AVAILABLE | Không có cấu hình nào từ SM-DP+. | ||
ERROR_CONNECTION_ERROR | Không thể tạo kết nối tới máy chủ. | ||
ERROR_INVALID_RESPONSE | Phản hồi không hợp lệ từ máy chủ SM-DP+/SM-DS. | ||
OPERATION_SWITCH | Không áp dụng | Đã xảy ra lỗi nội bộ khi thực hiện thao tác chuyển đổi. | |
ERROR_CARRIER_LOCKED | Không được phép chuyển đổi cấu hình do máy bị khóa nhà mạng (khóa SIM). | ||
OPERATION_DOWNLOAD | Không áp dụng | Đã xảy ra lỗi nội bộ khi thực hiện thao tác tải xuống. | |
ERROR_DISALLOWED_BY_PPR | Bảng ủy quyền quy tắc trên eUICC không có giá trị hoặc quy tắc chính sách hồ sơ không cho phép tải xuống. | ||
ERROR_INVALID_ACTIVATION_CODE | Đã xảy ra lỗi khi phân tích mã kích hoạt (định dạng không hợp lệ) hoặc cố tải xuống mà không có mã kích hoạt. | ||
ERROR_CARRIER_LOCKED | Không được phép tải xuống vì máy bị khóa nhà mạng (khóa SIM). | ||
ERROR_INCOMPATIBLE_CARRIER | Nhà cung cấp dịch vụ nằm trong danh sách đen và LPA không thể tải xuống cấu hình từ SM-DP+/SM-DS. | ||
ERROR_OPERATION_BUSY | Đang tải xuống hồ sơ và không được phép thực hiện hành động nào khác có thể kích hoạt thay đổi trạng thái SIM. | ||
OPERATION_METADATA | Không áp dụng | Đã xảy ra lỗi nội bộ khi thực hiện thao tác siêu dữ liệu. | |
ERROR_INVALID_ACTIVATION_CODE | Siêu dữ liệu đăng ký trống hoặc mã kích hoạt bên trong siêu dữ liệu đăng ký trống hoặc không hợp lệ. | ||
ERROR_INCOMPATIBLE_CARRIER | Nhà cung cấp dịch vụ nằm trong danh sách đen và LPA không thể tải xuống hồ sơ của nhà cung cấp dịch vụ này từ SM-DP+/SM-DS. | ||
OPERATION_EUICC_GSMA | Không áp dụng | Đã xảy ra lỗi nội bộ khi thực hiện thao tác eUICC GSMA. | |
ERROR_INSTALL_PROFILE | Lỗi eUICC khi cố gắng cài đặt hồ sơ. Ví dụ: hồ sơ đã tồn tại hoặc ICCID không khớp. | ||
ERROR_EUICC_INSUFFICIENT_MEMORY | Lỗi eUICC khi cố gắng cài đặt hồ sơ. Không đủ bộ nhớ trên eUICC. | ||
ERROR_DISALLOWED_BY_PPR | Lỗi eUICC khi cố gắng cài đặt hồ sơ. Không được phép theo quy tắc chính sách hồ sơ. | ||
OPERATION_APDU | Không áp dụng | Đã xảy ra lỗi nội bộ khi thực hiện thao tác APDU. | |
OPERATION_HTTP | 1-999 | Mã lỗi là giá trị lỗi HTTP. | |
Mã hoạt động | Mã chủ đề | Nguyên mã | Sự miêu tả |
OPERATION_SMDX_SUBJECT_REASON_CODE | Chuỗi chứa 3 chữ số cách nhau bằng dấu chấm, không có số 0 đứng đầu. Ví dụ: 8.1.1 . | Chuỗi chứa 3 chữ số cách nhau bằng dấu chấm và không có số 0 đứng đầu. Ví dụ: 3.8 . | Mã chủ đề[5.2.6.1] và Mã lý do[5.2.6.2] từ GSMA (SGP.22 v2.2). Ví dụ: Mã chủ đề là 8.1.1 và Mã lý do là 3.8 có nghĩa là EID được liên kết với một thiết bị khác. |