ממשקי ה-API של eUICC מספקים קודי שגיאה שיעזרו לאפליקציות ולמשתמשים לפתור בעיות שקשורות להורדה, להפעלה, להשבתה ולמחיקה של פרופילי eSIM.
טיפול בשגיאות
כשמתרחשת שגיאה בזמן הקריאה ל-eUICC API, ניתנת קריאה חוזרת (callback) של Intent בהמתנה, והמפתח EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE
משמש לקבלת קוד השגיאה המפורט. החל מ-Android 11, ארבעת המפתחות והערכים הבאים כלולים ב-Intent שמתקבל:
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 v2.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 v2.2). השדה הזה יאוכלס רק כשקוד הפעולה הואOPERATION_SMDX_SUBJECT_REASON_CODE
.
ארבעת הערכים האלה מאפשרים למבצע הקריאה ל-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
מקושר למכשיר אחר. |