處理 eUICC API 錯誤

eUICC API提供錯誤代碼以幫助應用和用戶解決與下載、啟用、禁用和刪除 eSIM 配置文件相關的問題。

處理錯誤

當調用 eUICC API 發生錯誤時,會提供一個掛起的 Intent 回調,並使用EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE作為獲取詳細錯誤碼的 key。從 Android 11 開始,生成的 Intent 中包含以下四個鍵和值:

這四個值允許 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嘗試執行 SIM 插槽操作時超時。
ERROR_EUICC_MISSING設備上沒有 eUICC 可用或處於活動狀態。
OPERATION_EUICC_CARD不適用執行 eUICC 操作時發生內部錯誤。
ERROR_UNSUPPORTED_VERSION eUICC(芯片)版本和EuiccCard(軟件)版本不兼容。
ERROR_EUICC_MISSING設備中沒有可用的 SIM 卡。例如,LPA 無法檢測到 SIM 卡。
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不允許切換配置文件,因為設備已被運營商鎖定(SIM 卡鎖定)。
OPERATION_DOWNLOAD不適用執行下載操作時發生內部錯誤。
ERROR_DISALLOWED_BY_PPR eUICC 上的規則授權表為空或配置文件策略規則不允許下載。
ERROR_INVALID_ACTIVATION_CODE解析激活碼(格式無效)或嘗試在沒有激活碼的情況下下載時出錯。
ERROR_CARRIER_LOCKED不允許下載,因為該設備已被運營商鎖定(SIM 卡鎖定)。
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來自 GSMA (SGP.22 v2.2) 的 SubjectCode[5.2.6.1] 和 ReasonCode[5.2.6.2]。例如,SubjectCode 為8.1.1和 ReasonCode 為3.8表示 EID 綁定到另一個設備。