Remarque :
Solution suivante:
- est testé sur Android 4.2.1, COS12 (Android 5.0.2) et CM12.1 (Android 5.1.1) - tous exécutant Play Store v6.0.5 1
- nécessite un Android rooté
- voici une courte démo de la solution
En parcourant le manifeste de Play Store, j'ai pris une supposition éclairée que seul le service suivant est probablement l'initiateur de la mise à jour automatique des applications via Wi-Fi.
com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager$CheckWifiAndAutoUpdate
J'ai joué avec ce service dans quelques conditions sur différents appareils et l'ai trouvé utile pour l'objectif en question. Il va sans dire que le paramètre de mise à jour automatique des applications doit être défini sur «Mise à jour automatique des applications via Wi-Fi uniquement» dans Play Store.
Voici ce que vous pouvez faire: installer une application d' automatisation qui peut exécuter une série d'actions lorsque la source d'alimentation et le Wi-Fi sont connectés et plus tard, déconnectés. J'ai utilisé Tasker ( version d'essai ; guide d'utilisation ) comme application d'automatisation.
Nous aurions besoin de deux tâches: une tâche d'entrée et une tâche de sortie. Voir ma réponse ici pour une aide connexe.
Entrez la tâche : (Actions):
Code → Exécuter Shell
- Vous pouvez éventuellement ajouter une ou plusieurs actions pour vous informer que la procédure de mise à jour a commencé. J'ai utilisé Alert → Flash pour me notifier via un toast.
Quitter la tâche : (Actions):
Cette tâche nécessite l'installation des applets Busybox. Voir Comment installer les outils de ligne de commande manquants sur un appareil Android? pour une aide connexe.
Net → Test Net
- Type: données mobiles activées
- Résultat du magasin dans:
%Mdata
Code → Exécuter Shell
- Encore une fois, pour vous informer, utilisez l'action de votre choix.
Que font ces tâches?
Lorsque les conditions pour les deux contextes sont remplies, la tâche d'entrée est exécutée. Les commandes de cette tâche effectuent ces opérations dans un ordre séquentiel:
- activer le service Play Store susmentionné
- Play Store force-stop
- démarrer le service dudit Play Store
Et c'est tout pour que la mise à jour automatique commence.
Après être resté activé, chaque fois que le profil se désactive (simplement parce qu'une condition pour un contexte ne se remplit plus), la tâche de sortie s'exécute. Cette tâche de sortie exécute les étapes suivantes dans un ordre séquentiel:
- stocker l'état (activé / désactivé) des données mobiles dans une variable Mdata
le travail de ces commandes est de:
- désactiver les données mobiles
- désactiver le Wi-Fi
- Play Store force-stop
- Gestionnaire de téléchargement force-stop
J'ai remarqué que si une mise à jour (téléchargement en cours) pour une application est interrompue en raison de l' indisponibilité de la connexion Wi-Fi, la barre de progression (notification) est rejeté, l'état des progrès est stocké dans une ligne dans la table téléchargements de la base de données téléchargements .db . (Cette base de données se trouve sous le répertoire de données de Download Manager.) Cette ligne contient également l'emplacement du fichier partiellement téléchargé.
Afin de vous assurer que la mise à jour automatique ne se produira pas lors de la prochaine connexion Wi-Fi réussie et en veillant à ce qu'elle ne le fasse jamais lorsque le profil n'exécute pas la tâche d'entrée, voici ce que font les autres commandes:
- extraire l'emplacement du fichier partiellement téléchargé de la valeur de la colonne
_data
correspondant à une ligne identifiée par com.android.vending comme notificationpackage. Nous visons à supprimer ce fichier. C'est un petit sacrifice à faire.
- s'il y a bien un chemin de fichier sous _data , alors utilisez-le pour supprimer le fichier pointé par lui.
- supprimez cette ligne, sinon, elle sera lue par Download Manager lorsque la connectivité réseau changera (reconnectée à un réseau Wi-Fi) et que la mise à jour automatique recommencera.
- désactiver le service Play Store susmentionné afin que la mise à jour automatique ne démarre jamais d'elle-même
- activer le Wi-Fi
- activez les données mobiles, si elles ont été activées avant d'exécuter cette tâche.
1 Au moment de la création de la première révision de cette réponse, la version actuelle du Play Store n'est certainement pas 6.0.5 mais supérieure. Cependant, aucun de mes appareils n'a reçu de mise à jour Play Store jusqu'à présent.