Tâche Launch App
Résumé
- Nom interne :
LaunchApp - Catégorie : Package Manager
- Objectif : Lancer une application installée sur l'appareil à partir de son nom de package, via son activité de lancement par défaut.
- Type de tâche : Normale
Compatibilité
-
Version AndroMate minimale :
1.1.0 -
Version AndroMate maximale :
1.1.0 -
Android minimum :
Android 13 (API 33) -
Android testé maximum :
Android 16 (API 36) -
Permissions requises :
QUERY_ALL_PACKAGES,SYSTEM_ALERT_WINDOW(recommandée)
Description détaillée
La tâche Launch App démarre une application en résolvant son activité de lancement par défaut via PackageManager.getLaunchIntentForPackage() et en appelant startActivity() avec le flag FLAG_ACTIVITY_NEW_TASK (requis lors d'un lancement depuis un contexte de service).
Note sur le lancement en arrière-plan : Depuis Android 10 (API 29), une application en arrière-plan ne peut pas démarrer d'activités (restrictions Background Activity Launch). AndroMate s'exécute en tant que service de premier plan ; pour lancer d'autres applications de manière fiable, il s'appuie sur le service d'accessibilité et la permission Affichage par-dessus les autres applications (
SYSTEM_ALERT_WINDOW), qui l'exemptent tous deux des restrictions BAL.
Si le package n'est pas installé ou n'a pas d'activité lançable, la tâche lève PACKAGE-MANAGER-ERROR-001.
Paramètres d'entrée
| Paramètre | Type | Requis | Valeurs possibles / Règles | Compatibilité Android | Compatibilité AndroMate | Défaut |
|---|---|---|---|---|---|---|
package_name |
String | Oui | Nom de package Android valide (com.example.app) |
Android 13 (API 33) → Android 16 (API 36) | 1.1.0 → 1.1.0 | "" |
Paramètres de sortie
La tâche Launch App ne retourne pas de données. Son objectif est d'effectuer une action système.
Exceptions
| Code | Condition de déclenchement |
|---|---|
PACKAGE-MANAGER-ERROR-001 |
Le package n'est pas installé, ou n'a pas d'activité lançable (MAIN/LAUNCHER) |
Diagramme d'exécution
flowchart TD
Start([▶ LaunchApp]) --> Resolve[🔧 Résolution package_name]
Resolve --> GetIntent[📦 getLaunchIntentForPackage]
GetIntent --> HasIntent{Intent de lancement\ntrouvé ?}
HasIntent -->|Non| Throw([❌ PACKAGE-MANAGER-ERROR-001])
HasIntent -->|Oui| AddFlag[🚩 Ajout FLAG_ACTIVITY_NEW_TASK]
AddFlag --> StartActivity[▶ startActivity]
StartActivity --> Success([✅ VoidResult])
style Start fill:#e3f2fd
style Success fill:#c8e6c9
style Throw fill:#ffcdd2
style GetIntent fill:#fff9c4
style StartActivity fill:#f3e5f5
Fonctionnement :
- Résolution : le
package_nameest résolu avec le contexte AndroMate - Récupération de l'intent :
getLaunchIntentForPackage()résout l'activité de lancement par défaut de l'app - Vérification : si aucun intent n'est retourné, la tâche lève
PACKAGE-MANAGER-ERROR-001 - Lancement :
FLAG_ACTIVITY_NEW_TASKest ajouté etstartActivity()est appelé - Résultat : retourne
VoidResult
Exemples de code
Exemple 1 — Lancer WhatsApp
Détail des paramètres d'entrée
package_name — Package cible
L'identifiant de package Android de l'app à lancer.
- Doit être un nom de package valide et installé (ex.
com.whatsapp) - Supporte l'interpolation de variables (ex.
$target_pkg,${PKG}) - L'app doit exposer une activité lançable (catégorie
LAUNCHER, actionMAIN) - Si aucun intent de lancement ne peut être résolu, la tâche lève
PACKAGE-MANAGER-ERROR-001
Détail des paramètres de sortie
Cette tâche ne produit aucune variable de sortie. Elle effectue une action système (démarrage de l'app cible) et retourne un VoidResult en cas de succès.