توفّر واجهات برمجة تطبيقات eUICC رموز خطأ لمساعدة التطبيقات والمستخدمين في تحديد المشاكل وحلّها، مثل المشاكل المتعلّقة بتنزيل ملفات eSIM الشخصية وتفعيلها وإيقافها وحذفها.
معالجة الأخطاء
عند حدوث خطأ أثناء طلب بيانات من واجهة برمجة تطبيقات eUICC، يتم تقديم معاودة الاتصال بـ PendingIntent ويتم استخدام 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.22 الإصدار 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.22 الإصدار 2.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 |
غير سارٍ | حدث خطأ داخلي أثناء تنفيذ عملية فتحة بطاقة 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 |
غير سارٍ | حدث خطأ داخلي أثناء تنفيذ عملية GSMA على شريحة eUICC. | |
ERROR_INSTALL_PROFILE |
حدث خطأ في شريحة eUICC أثناء محاولة تثبيت الملف الشخصي. على سبيل المثال، إذا كان الملف الشخصي موجودًا من قبل أو إذا كان رمز ICCID غير متطابق. | ||
ERROR_EUICC_INSUFFICIENT_MEMORY |
حدث خطأ في شريحة eUICC أثناء محاولة تثبيت الملف الشخصي. لا تتوفّر ذاكرة كافية على شريحة eSIM. | ||
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 (الإصدار 2.2 من SGP.22). على سبيل المثال، يعني SubjectCode بقيمة 8.1.1 وReasonCode بقيمة 3.8 أنّ معرّف EID مرتبط بجهاز آخر. |