טיפול בשגיאות של eUICC API

ממשקי ה-API של eUICC מספקים קודי שגיאה שיעזרו לאפליקציות ולמשתמשים לפתור בעיות שקשורות להורדה, להפעלה, להשבתה ולמחיקה של פרופילי eSIM.

טיפול בשגיאות

כשמתרחשת שגיאה בזמן הקריאה ל-eUICC API, ניתנת קריאה חוזרת (callback) של Intent בהמתנה, והמפתח EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE משמש לקבלת קוד השגיאה המפורט. החל מ-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 היא null או שההורדה אסורה לפי כלל מדיניות הפרופיל.
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.
קוד פעולה Subject code קוד הסיבה תיאור
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 מקושר למכשיר אחר.