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
- La tâche peut ouvrir une Activity cible via les paramètres Intent :
ActionPackageNameClassName- Une fois l’écran affiché, la séquence ClickInText démarre
- Chaque étape attend un événement système de confirmation
- Puis la machine à états passe à l’étape suivante
- L’exécution se termine lorsque :
- tous les clics sont réalisés avec succès
- 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:truesi tous les clics ont réussierrorMsg: 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"
}
]
}
]
}