Aller au contenu

Screen Automator — Série ClickInText (Mode Machine à États)

Résumé

  • Nom interne : SCREEN_AUTOMATOR_SERIES
  • Tag JSON : "ScreenAutomatorSeries"
  • Catégorie : Automatisation écran / Accessibilité
  • But : Ouvrir un écran cible (via les paramètres Intent), puis exécuter une séquence ClickInText rapide basée sur une machine à états, spécialement optimisée pour les appareils Samsung.
  • Type de tâche : Normale

Cette tâche permet à un workflow AndroMate de cliquer automatiquement sur plusieurs éléments UI en se basant sur leur texte, tels que :

  • « Suivant »
  • « Autoriser »
  • « OK »
  • « Continuer »
  • « Terminer »

Contrairement au Screen Automator classique, cette fonctionnalité fonctionne en interne comme une machine à états :
chaque clic ne passe à l’étape suivante que lorsque le système envoie un événement de confirmation.

➡️ Résultat : exécution plus rapide, plus fluide et plus fiable sur Samsung.


⚠ Avertissement important

Cette fonctionnalité repose sur le service d’accessibilité Android (Accessibility Service).

  • Elle a été testée et validée uniquement sur les appareils Samsung (One UI 6.x / 7.x / 8.x).
  • Les autres constructeurs peuvent avoir des comportements différents.
  • Certains OEM possèdent des implémentations instables ou restreintes de l’accessibilité.

🚨 Dans certains cas rares, sur des appareils non Samsung : - le service d’accessibilité peut planter au niveau système - ce plantage ne peut pas être géré ni récupéré par AndroMate - l’utilisateur devra parfois redémarrer le service ou l’appareil

👉 Pour un usage en production, les appareils Samsung sont fortement recommandé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

  • Samsung uniquement (support complet)
  • ⚠ Autres constructeurs : compatibilité non garantie / instabilité possible

Permissions requises

  • ACCESSIBILITY_SERVICE
  • Les permissions nécessaires à l’Activity cible (si démarrage via Intent)

Fonctionnement

  1. La tâche peut ouvrir une Activity cible via les paramètres Intent :
  2. Action
  3. PackageName
  4. ClassName
  5. Une fois l’écran affiché, la séquence ClickInText démarre
  6. Chaque étape attend un événement système de confirmation
  7. Puis la machine à états passe à l’étape suivante
  8. L’exécution se termine lorsque :
  9. tous les clics sont réalisés avec succès
  10. ou un timeout / une erreur survient

Cette approche évite les boucles de scan UI intensives →
laissant place à une automation plus rapide et plus stable sur Samsung.


Paramètres d’entrée

Paramètre Type Obligatoire Règles / Valeurs possibles Compatibilité Android Compatibilité AndroMate Défaut
Action String Non Action d’Intent (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 (com.example.app) Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 ""
ClassName String Non Nom de classe complet de l’Activity Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 ""
command JSON Array Oui Tableau de commandes ClickInText Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 []

Si une Activity est fournie, elle est lancée avant la séquence de clics.


Paramètres de sortie

Retourne un ScreenAutomatorResult :

  • automatorResult : true si tous les clics ont réussi
  • errorMsg : description en cas d’erreur ou de timeout

Aucune variable de workflow n’est générée.


Détail des paramètres

1. command (séquence ClickInText)

Le champ command contient la liste ordonnée des actions texte à exécuter.

Format d’une entrée

Champ Type Obligatoire Description Défaut
ClickInText_textSelector String Oui Source du texte : Text, contentDescription, tooltipText ""
ClickInText_CompareType String Oui Mode de comparaison : exactText, startWith, Contain ""
ClickInText_Index Number Non Index si plusieurs éléments matchent 0
ClickInText_text String Oui Texte cible ""

Exemple :

"command": [
  {
    "ClickInText_textSelector": "Text",
    "ClickInText_CompareType": "exactText",
    "ClickInText_Index": 0,
    "ClickInText_text": "Suivant"
  },
  {
    "ClickInText_textSelector": "Text",
    "ClickInText_CompareType": "exactText",
    "ClickInText_Index": 0,
    "ClickInText_text": "Autoriser"
  }
]

Modèle d’exécution (Machine à États)

Démarrage
(Lancement optionnel d’une Activity via Intent)
Attente d’un événement système
Click #1 (match du texte)
Nouvel événement système
Click #2
… enchaînement …
Succès ou Timeout

Chaque transition est pilotée par événement, pas par timer.


Exceptions

Code Exception Name Description
SCREEN-AUTOMATOR-ERROR-007 INVALID_JSON_ARRAY Tableau command manquant, invalide ou vide
SCREEN-AUTOMATOR-ERROR-008 TIME_OUT Timeout d’exécution de la série Screen Automator
ERROR-000 OTHER_ERROR Erreur interne inattendue

Exemple JSON complet

{
  "ScreenAutomatorSeries": [
    {
      "id": "200",
      "title": "Validation automatique de l’assistant Samsung",
      "Action": "android.settings.SETTINGS",
      "PackageName": "com.android.settings",
      "ClassName": "com.android.settings.Settings",
      "command": [
        {
          "ClickInText_textSelector": "Text",
          "ClickInText_CompareType": "exactText",
          "ClickInText_Index": 0,
          "ClickInText_text": "Suivant"
        },
        {
          "ClickInText_textSelector": "Text",
          "ClickInText_CompareType": "exactText",
          "ClickInText_Index": 0,
          "ClickInText_text": "Accepter"
        },
        {
          "ClickInText_textSelector": "Text",
          "ClickInText_CompareType": "Contain",
          "ClickInText_Index": 0,
          "ClickInText_text": "Terminer"
        }
      ]
    }
  ]
}