Comment autoriser la mise à jour automatique des applications dans Play Store uniquement lorsqu'il est branché?

14

Je souhaite que les applications soient mises à jour automatiquement lorsque mon téléphone est branché (en charge) et sur wifi. Je peux facilement autoriser la mise à jour automatique uniquement lorsque le wifi est activé avec l'option appropriée dans les paramètres du Play Store, mais ne pas empêcher les mises à jour automatiques de se produire si le téléphone fonctionne sur batterie.

Cela provoque une décharge inutile de la batterie lorsque j'utilise mon téléphone sur le wifi à la maison. Étant donné que la mise à jour automatique des applications est plus un travail démon qu'une tâche critique, je ne peux pas croire que ce ne soit pas une stratégie d'économie d'énergie standard.

Connaissez-vous des applications ou une solution de contournement du système (y compris si l'appareil est enraciné) pour y parvenir?

Erwin Mayer
la source

Réponses:

4

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' 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):

    1. Code → Exécuter Shell

      • Commander:

        pm activer com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate;
        suis force-stop com.android.vending;
        suis startervice com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate
        
      • cochez Utiliser la racine
    2. 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.

    1. Net → Test Net

      • Type: données mobiles activées
      • Résultat du magasin dans: %Mdata
    2. Code → Exécuter Shell

      • Commander:

        désactivation des données svc;
        svc wifi désactiver;
        suis force-stop com.android.vending;
        suis force-stop com.android.providers.downloads;
        down_path = $ (requête de contenu --uri contenu: // téléchargements / my_downloads --projection _data - où "notificationpackage = 'com.android.vending'");
        [["$ down_path"! = "Aucun résultat trouvé." ]] && echo $ down_path | sed 's /.*=// g' | xargs rm -f || l'écho continue;
        contenu supprimer --uri contenu: // téléchargements / my_downloads - où "notificationpackage = 'com.android.vending'"
        pm désactiver com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate;
        svc wifi enable;
        [["% Mdata" == "yes"]] && svc data enable || écho ne faisant rien;
        
      • cochez Utiliser la racine
    3. 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 _datacorrespondant à 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.

Seigneur du feu
la source
Le script ne fonctionnait pas pour moi, donc juste comme une petite étape de dépannage, j'ai exécuté la commande "requête de contenu" manuellement et j'ai remarqué qu'il en résulte effectivement la chaîne "Aucun résultat trouvé", donc la ligne suivante "suppression de contenu" ne fait rien depuis la condition IF n'est pas vraie.
prl77
2

Le plus proche que je suis venu combine deux paramètres. Je le fais sur deux appareils, l'un exécutant Android 4.4.4 (KitKat) et un autre exécutant Android 5.0.2 (Lollipop).

  • Paramètres système → Wi-Fi → Avancé → Gardez le Wi-Fi activé pendant le sommeil → Uniquement lorsqu'il est branché
  • Play Store → Paramètres → Mise à jour automatique des applications → Mise à jour automatique des applications via Wi-Fi uniquement

Il semble récupérer les mises à jour au moins un peu plus souvent lorsqu'il est branché. Ce n'est pas parfait, mais ce n'est pas une mauvaise demi-solution, et cela ne nécessite ni Tasker ni enracinement.

Benjamin Oakes
la source
0

Cela peut être réalisé en utilisant Tasker (App payant). Dans Tasker, le profil peut définir les conditions suivantes. Il a peu de courbe d'apprentissage, mais cette application peut remplacer presque de nombreuses applications.

Voici un exemple de profil,

Lorsque la batterie> X% et le Wi-Fi sont activés et que la charge est activée

Activer la synchronisation automatique activée

Ceci est juste l'exemple, vous pouvez spécifier la condition en fonction de vos besoins. Comme il s'agit d'un sujet distinct, je vous encourage à utiliser google tasker dans les forums xda.

Cyborgz
la source
3
Cela n'activerait-il pas / ne désactiverait-il pas la synchronisation automatique de toutes les données? Devoir actualiser manuellement tous les autres services juste pour que le Play Store ne se mette pas à jour automatiquement ne semble pas idéal.
M. Buster du