واسطهای برنامهنویسی کاربردی eUICC کدهای خطا را ارائه میدهند تا به برنامهها و کاربران در عیبیابی مشکلات مربوط به بارگیری، فعالسازی، غیرفعالسازی، و حذف نمایههای سیمکارت داخلی کمک کنند.
مدیریت کردن خطاها
وقتی هنگام فراخوانی «میانای برنامهسازی کاربردی eUICC» خطایی رخ میدهد، یک برگشت هدف معلقه ارائه میشود و
EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE
بهعنوان کلید دریافت کد خطای دقیق استفاده میشود. از Android 11، چهار کلید و مقدار زیر در هدف نتیجه گنجانده شده است:
EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE: اطلاعاتی درباره اینکه چه چیزی اشتباه بوده است ارائه میدهد. برای مثال، بارگیری یا حذف نمایه سیمکارت داخلی. این فیلد هرگز خالی نیست.EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE: اطلاعات درباره دلیل بروز خطا. برای مثال، درخواست زمانبندی شده است یا دستگاه قفل شرکت مخابراتی دارد. این فیلد در موارد زیر درج نمیشود:- کد عملیات
OPERATION_SMDX_SUBJECT_REASON_CODEاست. - خطا از نوع خطای سطح پایین مانند
IOExceptionیاInterruptedExceptionاست.
- کد عملیات
EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE: باEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODEاستفاده میشود که با هم «کد موضوع» [5.2.6.1] و «کد دلیل» [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استفاده میشود که با هم «کد موضوع» [5.2.6.1] و «کد دلیل» [5.2.6.2] را از GSMA (SGP.22 v2.2) ارائه میدهند. این فیلد فقط زمانی تکمیل میشود که کد عملیاتOPERATION_SMDX_SUBJECT_REASON_CODEباشد.
این چهار مقدار به فراخواننده میانای برنامهسازی کاربردی eUICC اجازه میدهد خطاهای خاص را بهطور جداگانه مدیریت کند. در زیر مثالی از نحوه رسیدگی به این خطاها آورده شده است.
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 |
نامربوط | هنگام انجام عملیات جایگاه سیمکارت، خطای داخلی روی داد. | |
ERROR_TIME_OUT |
زمان مجاز برای انجام عملیات شکاف سیمکارت بهپایان رسید. | ||
ERROR_EUICC_MISSING |
«کنترلکننده یکپارچه سیمکارت» در دستگاه دردسترس یا فعال نیست. | ||
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 |
خطای Keystore یا گواهی هنگام استفاده در اتصال 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 |
بارگیری نمایه درحال انجام است و هیچ کنش دیگری که بتواند تغییرات وضعیت سیمکارت را راهاندازی کند مجاز نیست. | ||
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 |
رشته حاوی ۳ رقم است که با نقطه از هم جدا شدهاند و صفر ابتدایی ندارد. برای مثال، 8.1.1. |
رشته حاوی ۳ رقم است که با نقطه از هم جدا شدهاند و صفر ابتدایی ندارد. برای مثال، 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
به دستگاه دیگری پیوند داده شده است. |