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