16 votes

Comment autoriser la mise à jour automatique des applications dans le Play Store uniquement lorsqu'elles sont branchées ?

J'aimerais que les applications soient mises à jour automatiquement lorsque mon téléphone est branché (en charge) et en 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 je ne peux pas empêcher les mises à jour automatiques de se produire si le téléphone fonctionne sur la batterie.

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

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

4voto

Firelord Points 23064

Note :

Solution suivante :

  • est testé sur Android 4.2.1, COS12 (Android 5.0.2) et CM12.1 (Android 5.1.1) - tous fonctionnant sous Play Store v6.0.5 1
  • nécessite un Android enraciné
  • aquí Voici une courte démonstration de la solution

En parcourant le manifeste du Play Store, j'ai supposé que seul le service suivant est susceptible d'être à l'origine de la mise à jour automatique des applications via le Wi-Fi.

com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager$CheckWifiAndAutoUpdate

J'ai joué avec ce service dans quelques conditions sur différents appareils et je 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 réglé sur "Auto-update apps over Wi-Fi only" dans le Play Store.

Voici ce que vous pouvez faire : Installez un automatisation Une application 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 de l'utilisateur ) 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 aquí pour obtenir de l'aide.

  • Entrez la tâche : (Actions) :

    1. Code → Exécuter le shell

      • Commandement :

        pm enable com.android.vending/com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager\\$CheckWifiAndAutoUpdate;
        am force-stop com.android.vending;
        am startservice com.android.vending/com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager\\$CheckWifiAndAutoUpdate
      • tick Use Root

    2. Vous pouvez éventuellement ajouter une ou plusieurs actions pour vous avertir 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 Les applets de Busybox sont installés. Voir Comment installer les outils de ligne de commande manquants sur un appareil Android ? pour obtenir de l'aide.

    1. Net → Test Net

      • Type : Données mobiles activées
      • Stocker le résultat dans : %Mdata
    2. Code → Exécuter le shell

      • Commandement :

        svc data disable;
        svc wifi disable;
        am force-stop com.android.vending;
        am force-stop com.android.providers.downloads;
        down\_path=$(content query --uri content://downloads/my\_downloads --projection \_data --where "notificationpackage='com.android.vending'");
        \[\[ "$down\_path" != "No result found." \]\] && echo $down\_path | sed 's/.\*=//g' | xargs rm -f || echo continue;
        content delete --uri content://downloads/my\_downloads --where "notificationpackage='com.android.vending'"
        pm disable com.android.vending/com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager\\$CheckWifiAndAutoUpdate;
        svc wifi enable;
        \[\[ "%Mdata" == "yes" \]\] && svc data enable || echo doing nothing;
      • tick Use Root

    3. Encore une fois, pour vous notifier, utilisez l'action de votre choix.

A quoi servent ces tâches ?

Lorsque les conditions des deux contextes sont remplies, la tâche d'entrée est exécutée. Les commandes de cette tâche font ces choses dans un ordre séquentiel :

  • activer le service du Play Store susmentionné
  • forcer l'arrêt du Play Store
  • lancer le service du Play Store en question

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 n'est plus remplie), 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
    • forcer l'arrêt du Play Store
    • forcer l'arrêt du gestionnaire de téléchargement

    J'ai remarqué que si une mise à jour (téléchargement en cours) d'une application est interrompue en raison de l'indisponibilité du Wi-Fi, la barre de progression (notification) est désactivée, l'état de la progression est stocké dans une ligne du tableau. téléchargements de la base de données téléchargements.db . (Cette base de données est située dans le répertoire de données de Download Manager.) Cette ligne contient également l'emplacement du fichier partiellement téléchargé.

    Afin de s'assurer que la mise à jour automatique ne se produit pas lors de la prochaine connexion réussie au Wi-Fi et de s'assurer qu'elle ne le fait 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é à partir de la valeur de la colonne _data correspondant à une ligne identifiée par com.Android.vending comme notificationpackage. Notre objectif est de supprimer ce fichier. C'est un petit sacrifice à faire.
    • s'il y a effectivement un chemin de fichier sous _données puis l'utiliser pour supprimer le fichier qu'il désigne.
    • supprimez cette ligne, sinon, elle sera lue par Download Manager lorsque la connectivité réseau changera (reconnexion à un Wi-Fi) et la mise à jour automatique recommencera.
    • Désactiver le service Play Store susmentionné afin que la mise à jour automatique ne commence jamais d'elle-même.
    • activer le Wi-Fi
    • activer les données mobiles, si elles étaient activées avant l'exécution de 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 nouvelle mise à jour du Play Store jusqu'à présent.

2voto

Benjamin Oakes Points 121

La solution la plus proche que j'ai trouvée est de combiner deux paramètres. Je le fais sur deux appareils, l'un fonctionnant sous Android 4.4.4 (KitKat) et l'autre sous Android 5.0.2 (Lollipop).

  • Paramètres système → Wi-Fi → Avancé → Maintenir le Wi-Fi activé pendant la veille → Uniquement lorsqu'il est branché.
  • Play Store → Paramètres → Mise à jour automatique des applications → Mise à jour automatique des applications par Wi-Fi uniquement.

Il semble capter 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 rooting.

0voto

Cyborgz Points 336

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

Vous trouverez ci-dessous un exemple de profil,

Lorsque Batterie > X %. Et Le Wifi est activé y La charge est activée

Activer Auto Sync On

Il s'agit juste d'un exemple, vous pouvez spécifier les conditions en fonction de vos besoins. Comme il s'agit d'un sujet distinct, je vous encourage à chercher tasker sur Google dans les forums de xda.

0voto

Wes Points 9

Un ticket est actuellement ouvert sur Google Code, et nous espérons que cette fonctionnalité sera ajoutée dans une prochaine version.

https://code.google.com/archive/p/Android-developer-preview/issues/1511

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X