Aller au contenu

Install Silent APK

Résumé

  • Nom interne : InstallSilentApk
  • Catégorie : Device Admin (MDM)
  • Objectif : Télécharger et installer silencieusement un APK depuis une URL, sans aucune interaction utilisateur, en utilisant les privilèges Android Device Owner.
  • Type de tâche : Normale

Compatibilité

  • Version minimale AndroMate : 1.1.0

  • Version maximale AndroMate : 1.1.0

  • Android minimum : Android 13 (API 33)

  • Android maximum testé : Android 16 (API 36)

  • Constructeurs supportés :

    • ✅ Tous les constructeurs
  • Permissions requises :

    • L'agent AndroMate doit être provisionné en tant que Device Owner sur l'appareil — voir la documentation de provisioning MDM / Device Owner. Ce n'est pas une permission runtime classique : sans le statut Device Owner, cette tâche échoue systématiquement.

Description détaillée

La tâche Install Silent APK télécharge un APK depuis apk_url et l'installe sans aucune boîte de dialogue de confirmation utilisateur — une capacité réservée à une application détenant le rôle Device Owner d'Android (scénario appareil entièrement géré / MDM).

C'est l'une des « tâches MDM » qui nécessitent que l'agent AndroMate soit Device Owner : chaque tâche de cette famille partage la même garde, et échoue immédiatement avec DEVICE-OWNER-ERROR-001 si l'agent n'est pas provisionné en tant que Device Owner — avant même de lire apk_url.

L'installation elle-même est asynchrone côté Android ; la tâche bloque jusqu'à ce qu'elle réussisse, échoue, ou que 60 secondes s'écoulent.


Paramètres d'entrée

Paramètre Type Obligatoire Valeurs possibles Compatibilité Android Compatibilité AndroMate Défaut
apk_url String Oui Une URL HTTP(S) accessible pointant vers un fichier .apk valide Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 ""

Paramètres de sortie

La tâche Install Silent APK ne produit aucune sortie. En cas de succès, le paquet décrit par l'APK téléchargé est installé sur l'appareil.


Exceptions

Code Nom de l'exception Description
DEVICE-OWNER-ERROR-001 Device Owner requis L'agent AndroMate n'est pas provisionné en tant que Device Owner sur cet appareil.
DEVICE-OWNER-ERROR-002 Échec de l'installation silencieuse de l'APK Le téléchargement ou l'installation a échoué (URL invalide, APK corrompu, signature incorrecte, etc. — voir le message d'erreur pour le détail).
Timeout L'installation n'a pas terminé dans les 60 secondes (fixe, non configurable).

Diagramme d'exécution

flowchart TD
    Start([▶ InstallSilentApk]) --> CheckOwner{Agent est\nDevice Owner ?}
    CheckOwner -->|Non| E1[❌ DEVICE-OWNER-ERROR-001\nDEVICE_OWNER_REQUIRED]
    CheckOwner -->|Oui| Download[⬇️ Télécharger l'APK depuis apk_url]
    Download --> Install[📦 Installer silencieusement, sans dialogue]
    Install --> Wait{Résultat dans\n60s ?}
    Wait -->|Non| E2[❌ Timeout]
    Wait -->|Succès| Success1[✅ Paquet installé]
    Wait -->|Échec| E3[❌ DEVICE-OWNER-ERROR-002\nINSTALL_FAILED]

    Success1 --> Success([✅ VoidResult])
    E1 --> Error([❌ Exception])
    E2 --> Error
    E3 --> Error

    style Start fill:#e3f2fd
    style Success fill:#c8e6c9
    style Error fill:#ffcdd2
    style Install fill:#fff9c4

Comment ça fonctionne :

  1. Vérification Device Owner : lève immédiatement DEVICE-OWNER-ERROR-001 si l'agent n'est pas Device Owner.
  2. Téléchargement + installation : télécharge l'APK depuis apk_url et l'installe silencieusement (sans invite utilisateur).
  3. Attente : bloque jusqu'à 60 secondes le callback d'installation (asynchrone).
  4. Résultat : le succès installe le paquet ; l'échec lève DEVICE-OWNER-ERROR-002 avec le message d'erreur sous-jacent ; l'absence de callback dans les 60s lève un timeout.

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

1. Paramètre d'entrée : apk_url

L'URL HTTP(S) depuis laquelle télécharger l'APK.

Exemple

"apk_url": "https://cdn.example.com/releases/agent-v2.apk"

Détails

  • Doit être accessible depuis l'appareil et servir un fichier .apk valide.
  • Résolu à l'exécution — peut référencer une $variable.

Exemple JSON complet

{
  "InstallSilentApk": [
    {
      "id": "1",
      "title": "Déployer la dernière version de l'agent",
      "apk_url": "https://cdn.example.com/releases/agent-v2.apk"
    }
  ]
}