APIهای eUICC کدهای خطا را برای کمک به برنامهها و کاربران در رفع مشکلات مربوط به دانلود، فعال کردن، غیرفعال کردن و حذف نمایههای eSIM ارائه میکنند.
رسیدگی به خطاها
هنگامی که هنگام فراخوانی API eUICC خطایی رخ می دهد، یک تماس با هدف معلق ارائه می شود و EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE
به عنوان کلید برای دریافت کد خطای دقیق استفاده می شود. با شروع از Android 11، چهار کلید و مقدار زیر در هدف حاصل گنجانده شده است:
-
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.2.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.2.2) را ارائه می کنند. این فیلد فقط زمانی پر می شود که کد عملیاتOPERATION_SMDX_SUBJECT_REASON_CODE
باشد.
این چهار مقدار به تماس گیرنده API 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 | هیچ 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 | دانلود نمایه در حال انجام است و هیچ اقدام دیگری که می تواند باعث تغییر وضعیت سیم کارت شود مجاز نیست. | ||
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 . | SubjectCode[5.2.6.1] و ReasonCode[5.2.6.2] از GSMA (SGP.22 v2.2). برای مثال، SubjectCode 8.1.1 و ReasonCode 3.8 به این معنی است که EID به دستگاه دیگری متصل است. |