Les API eUICC fournissent des codes d'erreur pour aider les applications et les utilisateurs à résoudre les problèmes liés au téléchargement, à l'activation, à la désactivation et à la suppression de profils eSIM.
Gestion des erreurs
Lorsqu'une erreur se produit lors de l'appel de l'API eUICC, un rappel d'intention en attente est fourni et EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE
est utilisé comme clé pour obtenir le code d'erreur détaillé. À partir d'Android 11, les quatre clés et valeurs suivantes sont incluses dans l'intention résultante :
-
EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE
: fournit des informations sur ce qui n'a pas fonctionné. Par exemple, télécharger ou supprimer un profil eSIM. Ce champ n'est jamais vide. EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE
: informations sur la raison pour laquelle l'erreur s'est produite. Par exemple, la demande a expiré ou l'appareil est verrouillé par l'opérateur. Ce champ n'est pas renseigné dans les cas suivants :- Le code d'opération est
OPERATION_SMDX_SUBJECT_REASON_CODE
. - L'erreur est une erreur de bas niveau telle que
IOException
ouInterruptedException
.
- Le code d'opération est
EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE
: utilisé avecEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE
, qui fournissent ensemble le SubjectCode[5.2.6.1] et le ReasonCode[5.2.6.2] de la GSMA (SGP.22 v2.2). Ce champ est renseigné uniquement lorsque le code d'opération estOPERATION_SMDX_SUBJECT_REASON_CODE
.EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE
: utilisé avecEXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE
, qui fournissent ensemble le SubjectCode[5.2.6.1] et le ReasonCode[5.2.6.2] de la GSMA (SGP.22 v2.2). Ce champ est renseigné uniquement lorsque le code d'opération estOPERATION_SMDX_SUBJECT_REASON_CODE
.
Ces quatre valeurs permettent à l'appelant de l'API eUICC de gérer des erreurs spécifiques individuellement. Ce qui suit est un exemple de la façon de gérer ces erreurs.
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.
}
Combinaisons de codes d'erreur et d'opération prises en charge
Le tableau suivant décrit la combinaison prise en charge de codes d'opération et d'erreur renvoyés par l'assistant de profil local (LPA).
Combinaisons de codes de fonctionnement et d'erreur | |||
---|---|---|---|
Code d'opération | Code d'erreur | Description | |
OPERATION_SYSTEM | N'est pas applicable | Une erreur interne a eu lieu. Par exemple, le thread a été interrompu ou une erreur IOException s'est produite. | |
OPERATION_SIM_SLOT | N'est pas applicable | Une erreur interne s'est produite lors de l'exécution d'une opération sur l'emplacement SIM. | |
ERROR_TIME_OUT | Délai dépassé lors de la tentative d'exécution d'une opération sur l'emplacement SIM. | ||
ERROR_EUICC_MISSING | Aucun eUICC n’est disponible ou actif sur l’appareil. | ||
OPERATION_EUICC_CARD | N'est pas applicable | Une erreur interne s'est produite lors de l'exécution d'une opération eUICC. | |
ERROR_UNSUPPORTED_VERSION | La version eUICC (puce) et la version EuiccCard (logiciel) ne sont pas compatibles. | ||
ERROR_EUICC_MISSING | Aucune carte SIM n'est disponible dans l'appareil. Par exemple, le LPA ne parvient pas à détecter la carte SIM. | ||
OPERATION_SMDX | N'est pas applicable | Une erreur interne s'est produite lors de l'exécution d'une opération SM-DP+/SM-DS. | |
ERROR_ADDRESS_MISSING | Pas d'adresse SM-DP+ pour télécharger le profil. | ||
ERROR_INVALID_CONFIRMATION_CODE | Une erreur s'est produite lors de l'analyse du code d'activation (format invalide). | ||
ERROR_CERTIFICATE_ERROR | Erreur de magasin de clés ou de certificat lorsqu'il est utilisé dans une connexion TLS à des fins de vérification. | ||
ERROR_NO_PROFILES_AVAILABLE | Aucun profil disponible depuis SM-DP+. | ||
ERROR_CONNECTION_ERROR | Impossible de créer une connexion au serveur. | ||
ERROR_INVALID_RESPONSE | Réponse invalide du serveur SM-DP+/SM-DS. | ||
OPERATION_SWITCH | N'est pas applicable | Une erreur interne s'est produite lors de l'exécution d'une opération de commutation. | |
ERROR_CARRIER_LOCKED | Non autorisé à changer de profil car l'appareil est verrouillé par l'opérateur (SIM verrouillée). | ||
OPERATION_DOWNLOAD | N'est pas applicable | Une erreur interne s'est produite lors de l'exécution d'une opération de téléchargement. | |
ERROR_DISALLOWED_BY_PPR | La table d'autorisation des règles sur l'eUICC est nulle ou le téléchargement est interdit par la règle de stratégie de profil. | ||
ERROR_INVALID_ACTIVATION_CODE | Une erreur s'est produite lors de l'analyse du code d'activation (format invalide) ou lors de la tentative de téléchargement sans code d'activation. | ||
ERROR_CARRIER_LOCKED | Téléchargement non autorisé car l'appareil est verrouillé par l'opérateur (SIM verrouillée). | ||
ERROR_INCOMPATIBLE_CARRIER | L'opérateur est sur la liste noire et le LPA ne peut pas télécharger de profil depuis SM-DP+/SM-DS. | ||
ERROR_OPERATION_BUSY | Le téléchargement du profil est en cours et aucune autre action susceptible de déclencher des changements d'état de la carte SIM n'est autorisée. | ||
OPERATION_METADATA | N'est pas applicable | Une erreur interne s'est produite lors de l'exécution de l'opération sur les métadonnées. | |
ERROR_INVALID_ACTIVATION_CODE | Les métadonnées d'abonnement sont vides ou le code d'activation contenu dans les métadonnées d'abonnement est vide ou invalide. | ||
ERROR_INCOMPATIBLE_CARRIER | L'opérateur est sur la liste noire et le LPA ne peut pas télécharger le profil de cet opérateur depuis SM-DP+/SM-DS. | ||
OPERATION_EUICC_GSMA | N'est pas applicable | Une erreur interne s'est produite lors de l'exécution d'une opération eUICC GSMA. | |
ERROR_INSTALL_PROFILE | Erreur avec eUICC lors de la tentative d'installation du profil. Par exemple, le profil existe déjà ou l'ICCID ne correspond pas. | ||
ERROR_EUICC_INSUFFICIENT_MEMORY | Erreur avec eUICC lors de la tentative d'installation du profil. Pas assez de mémoire sur l'eUICC. | ||
ERROR_DISALLOWED_BY_PPR | Erreur avec eUICC lors de la tentative d'installation du profil. Non autorisé par la règle de stratégie de profil. | ||
OPERATION_APDU | N'est pas applicable | Une erreur interne s'est produite lors de l'exécution d'une opération APDU. | |
OPERATION_HTTP | 1-999 | Le code d'erreur est une valeur d'erreur HTTP. | |
Code d'opération | Code sujet | Code de raison | Description |
OPERATION_SMDX_SUBJECT_REASON_CODE | La chaîne contient 3 chiffres séparés par un point, sans zéros non significatifs. Par exemple, 8.1.1 . | La chaîne contient 3 chiffres séparés par un point sans zéro non significatif. Par exemple, 3.8 . | SubjectCode[5.2.6.1] et ReasonCode[5.2.6.2] de la GSMA (SGP.22 v2.2). Par exemple, un SubjectCode de 8.1.1 et un ReasonCode de 3.8 signifient que l'EID est lié à un autre appareil. |