Aller au contenu

Intent — Lancement d’Intent Android

Résumé

  • Nom interne : INTENT
  • Catégorie : Interaction système Android
  • But : Construire et exécuter un Intent Android pour démarrer une activité ou envoyer un broadcast.
  • Type de tâche : Normale

Cette tâche permet à un workflow AndroMate d’interagir avec le système Android et les applications installées :
ouvrir des écrans (Settings, app spécifique, etc.) ou envoyer des évènements broadcast personnalisés.


Compatibilité

  • Version AndroMate minimale : 1.1.0
  • Version AndroMate maximale : 1.1.0
  • Android minimum : Android 13 (API 33)
  • Android maximum testé : Android 16 (API 36)

Constructeurs supportés

  • ✅ Tous les constructeurs supportés par AndroMate (comportement dépend du firmware)

Permissions nécessaires

Selon la cible de l’Intent, Android peut exiger des permissions spécifiques :

  • Démarrer certaines activités système ou OEM peut nécessiter des autorisations particulières
  • L’envoi de certains broadcasts est restreint ou bloqué sur les versions Android récentes

Description détaillée

La tâche Intent construit un Intent Android à partir des paramètres fournis, résolus dynamiquement par le contexte AndroMate (AndroMateContext).

Deux modes d’exécution sont supportés :

ActionType Description
Start Activity Lance une activité via Context.startActivity()
Send Broadcast Envoie un broadcast via Context.sendBroadcast()

Les paramètres peuvent contenir des variables (ex : ${PKG_NAME}) qui seront résolues avant exécution.


Paramètres d’entrée

Paramètre Type Obligatoire Valeurs possibles / Règles Compatibilité Android Compatibilité AndroMate Défaut
Action String Non Toute action d’Intent valide (android.intent.action.* ou custom) Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 ""
PackageName String Non Nom de package Android valide (com.example.app) Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 ""
ClassName String Non Nom de classe complet (com.example.app.MainActivity) Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 ""
Data String Non URI de données (tel:, geo:, package:, etc.) Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 ""
ActionType Enum / String Oui Start Activity ou Send Broadcast Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0

Paramètres de sortie

La tâche Intent ne retourne pas de données (pas de stdout/stderr, pas de variables de sortie).
Son but est d’effectuer l’action système, pas de produire un contenu.


Détail des paramètres

1. ActionType

Définit le mode d’exécution de la tâche.

  • Start Activity : lance une activité cible via context.startActivity(intent) avec les flags :
  • FLAG_ACTIVITY_NEW_TASK
  • FLAG_ACTIVITY_CLEAR_TASK
  • Send Broadcast : envoie un broadcast via context.sendBroadcast(intent).

Cette valeur est lue depuis le champ JSON ActionType et stockée dans un AndromateString.

Exemple

"ActionType": "Start Activity"

ou

"ActionType": "Send Broadcast"

2. Action

Représente la chaîne d’action de l’Intent (équivalent à Intent.setAction(String)).

Exemples courants :

  • android.settings.SETTINGS
  • android.intent.action.VIEW
  • com.example.CUSTOM_EVENT

Si aucune action n’est fournie, l’Intent peut encore être valide si un PackageName + ClassName sont fournis (Intent explicite).

Exemple

"Action": "android.settings.SETTINGS"

3. PackageName

Spécifie le package Android cible.
Utilisé pour construire un Intent explicite avec un couple (PackageName, ClassName).

  • Doit être un nom de package valide, par exemple :
  • com.android.settings
  • com.example.app

Si le PackageName est vide, Android tentera une résolution implicite de l’Intent (selon l’Action et les filtres d’intent des apps).

Exemple

"PackageName": "com.android.settings"

4. ClassName

Nom de classe complètement qualifié de l’activité cible.

  • Utilisé seulement si PackageName est renseigné
  • Doit inclure le package complet, par exemple :
  • com.android.settings.Settings
  • com.example.app.ui.MainActivity

Si PackageName est vide, ClassName est ignoré lors de la construction de l’Intent.

Exemple

"ClassName": "com.android.settings.Settings"

5. Data

Chaîne représentant une URI de données qui sera associée à l’Intent (équivalent à Intent.setData(Uri) après parsing).

Exemples typiques :

  • tel:+21690000000 → composer un numéro
  • package:com.example.app → cibler un package (désinstallation, détails, etc.)
  • geo:36.8065,10.1815 → localisation géographique

Si vide, aucune donnée n’est associée à l’Intent.

Exemple

"Data": "tel:+21690000000"

Comportement d’exécution

  1. Construction de l’Intent via intent::setAction setPackageName setClassName
  2. Si la construction échoue → un message d’erreur est loggé dans ReportSection
  3. Si l’Intent est valide :
  4. Si ActionType == "Start Activity"context.startActivity(intent) avec flags NEW_TASK + CLEAR_TASK
  5. Si ActionType == "Send Broadcast"context.sendBroadcast(intent)

En cas d’échec d’exécution, une AndromateException est levée avec un type spécifique.


Exceptions

Code Exception Name Description
Intent-ERROR-001 INTENT_START_ACTIVITY_ERROR Impossible de démarrer l’activité
Intent-ERROR-002 INTENT_SEND_BROADCAST_ERROR Impossible d’envoyer le broadcast

Ces codes sont définis dans AndromateExceptionTypes et peuvent être remontés au moteur d’exécution AndroMate.


Exemple JSON complet

{
  "Intent": [
    {
      "id": "50",
      "title": "Open Android Settings",
      "Action": "android.settings.SETTINGS",
      "PackageName": "com.android.settings",
      "ClassName": "com.android.settings.Settings",
      "Data": "",
      "ActionType": "Start Activity"
    },
    {
      "id": "51",
      "title": "Send custom broadcast",
      "Action": "com.example.CUSTOM_EVENT",
      "PackageName": "com.example.app",
      "ClassName": "",
      "Data": "",
      "ActionType": "Send Broadcast"
    }
  ]
}