Aller au contenu

Tâche Get App Info

Résumé

  • Nom interne : GetAppInfo
  • Catégorie : Package Manager
  • Objectif : Récupérer les informations détaillées d'une application installée à partir de son nom de package : version, libellé, dates d'installation, SDK cible, taille de l'APK, et indicateurs système/activé.
  • 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


Description détaillée

La tâche Get App Info interroge le PackageManager Android pour un package donné et retourne toutes les métadonnées disponibles. Chaque information est écrite dans sa propre variable de sortie optionnelle — seules les sorties que vous renseignez sont stockées, les autres sont ignorées.

Depuis Android 11 (API 30), les applications ne peuvent plus voir les autres packages installés par défaut (filtrage de visibilité des packages). AndroMate déclare la permission QUERY_ALL_PACKAGES pour pouvoir interroger n'importe quel package installé par son nom.

Si le package n'est pas installé, 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

Toutes les sorties sont optionnelles — laissez un champ vide pour l'ignorer.

Champ Type Condition de déclenchement Compatibilité Android Compatibilité AndroMate Défaut
version_name_output String Nom de version de l'app (ex. "2.5.1") Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 <ANDROMATE_NULL_VALUE>
version_code_output Long Code de version entier (ex. 150) Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 <ANDROMATE_NULL_VALUE>
app_name_output String Libellé d'affichage de l'app (ex. "WhatsApp") Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 <ANDROMATE_NULL_VALUE>
first_install_output Long Horodatage de première installation (ms) Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 <ANDROMATE_NULL_VALUE>
last_update_output Long Horodatage de dernière mise à jour (ms) Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 <ANDROMATE_NULL_VALUE>
target_sdk_output Long Niveau d'API SDK cible (ex. 34) Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 <ANDROMATE_NULL_VALUE>
apk_size_output Long Taille du fichier APK en octets Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 <ANDROMATE_NULL_VALUE>
is_system_output String "true" si app système, sinon "false" Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 <ANDROMATE_NULL_VALUE>
is_enabled_output String "true" si activée, sinon "false" Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 <ANDROMATE_NULL_VALUE>

Exceptions

Code Condition de déclenchement
PACKAGE-MANAGER-ERROR-001 Le package n'est pas installé sur l'appareil

Diagramme d'exécution

flowchart TD
    Start([▶ GetAppInfo]) --> Resolve[🔧 Résolution package_name]

    Resolve --> Query[📦 PackageManager.getPackageInfo]

    Query --> Found{Package trouvé ?}

    Found -->|Non| Throw([❌ PACKAGE-MANAGER-ERROR-001])
    Found -->|Oui| Read[📖 Lecture version, libellé, dates,\nSDK cible, taille APK, indicateurs]

    Read --> Store[💾 Définir variables de sortie\nAppInfoTaskResult]

    Store --> Success([✅ AppInfoTaskResult])

    style Start fill:#e3f2fd
    style Success fill:#c8e6c9
    style Throw fill:#ffcdd2
    style Query fill:#fff9c4
    style Read fill:#f3e5f5
    style Store fill:#c8e6c9

Fonctionnement :

  1. Résolution : le package_name est résolu avec le contexte AndroMate
  2. Requête : PackageManager.getPackageInfo() est appelé avec le nom de package
  3. Vérification : si le package est introuvable, la tâche lève PACKAGE-MANAGER-ERROR-001
  4. Lecture : version, libellé, horodatages, SDK cible, taille APK et indicateurs sont lus
  5. Stockage : chaque variable de sortie demandée est renseignée
  6. Résultat : retourne AppInfoTaskResult

Exemples de code

Exemple 1 — Lire la version de WhatsApp

{
  "GetAppInfo": [
    {
      "id": "1",
      "title": "Version WhatsApp",
      "package_name": "com.whatsapp",
      "version_name_output": "$wa_version",
      "version_code_output": "$wa_code"
    }
  ]
}

Exemple 2 — Extraction complète des métadonnées

{
  "GetAppInfo": [
    {
      "id": "2",
      "title": "Infos complètes app",
      "package_name": "com.instagram.android",
      "app_name_output": "$name",
      "version_name_output": "$ver",
      "target_sdk_output": "$sdk",
      "apk_size_output": "$size",
      "is_system_output": "$is_sys",
      "is_enabled_output": "$is_on"
    }
  ]
}

Détail des paramètres d'entrée

package_name — Package cible

L'identifiant de package Android de l'app à inspecter.

  • Doit être un nom de package valide et installé (ex. com.whatsapp)
  • Supporte l'interpolation de variables (ex. $target_pkg, ${PKG})
  • Si le package n'est pas installé, la tâche lève PACKAGE-MANAGER-ERROR-001

Détail des paramètres de sortie

Toutes les variables de sortie sont optionnelles. Laissez un champ vide pour ne pas écrire cette valeur.

version_name_output — Nom de version

Chaîne de version lisible affichée aux utilisateurs (ex. "2.5.1").

version_code_output — Code de version

Entier monotone utilisé en interne pour comparer les mises à jour (ex. 150). Lu via getLongVersionCode().

app_name_output — Libellé de l'application

Le nom d'affichage de l'app tel qu'affiché dans le lanceur (ex. "WhatsApp").

first_install_output — Date de première installation

Horodatage en millisecondes depuis l'epoch de la première installation de l'app.

last_update_output — Date de dernière mise à jour

Horodatage en millisecondes depuis l'epoch de la dernière mise à jour. Égal à first_install_output si jamais mise à jour.

target_sdk_output — Version SDK cible

Le niveau d'API ciblé par l'app (ex. 34 pour Android 14).

apk_size_output — Taille de l'APK

Taille du fichier APK de base en octets.

is_system_output — Indicateur app système

"true" si l'app est une app système préinstallée (FLAG_SYSTEM), "false" sinon.

is_enabled_output — Indicateur activé

"true" si l'app est actuellement activée, "false" si désactivée.


Exemple JSON complet

{
  "GetAppInfo": [
    {
      "id": "1",
      "title": "Get App Info",
      "package_name": "com.whatsapp",
      "version_name_output": "$APP_VERSION",
      "app_name_output": "$APP_NAME"
    }
  ]
}