ממשקי ה-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 |
לא רלוונטי | אירעה שגיאה פנימית במהלך ביצוע פעולת GSMA ב-eUICC. | |
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 קשור למכשיר אחר. |