Wie kann ich zulassen, dass Apps im Play Store nur dann automatisch aktualisiert werden, wenn sie angeschlossen sind?

14

Ich möchte, dass Apps automatisch aktualisiert werden, wenn mein Telefon an das WLAN angeschlossen ist (aufgeladen wird). Ich kann die automatische Aktualisierung nur dann problemlos zulassen, wenn WLAN mit der entsprechenden Option in den Play Store-Einstellungen aktiviert ist. Wenn das Telefon mit Akku betrieben wird, kann die automatische Aktualisierung jedoch nicht verhindert werden.

Dies führt zu einer unnötigen Batterieentladung, wenn ich mein Telefon zu Hause über WLAN verwende. Angesichts der Tatsache, dass das automatische Aktualisieren von Apps eher ein Daemon-Job als eine zeitkritische Aufgabe ist, kann ich nicht glauben, dass es sich nicht um eine Standardstrategie zum Stromsparen handelt.

Kennen Sie Apps oder eine Systemumgehung (auch wenn das Gerät gerootet ist), um dies zu erreichen?

Erwin Mayer
quelle

Antworten:

4

Hinweis :

Folgende Lösung:

  • wird auf Android 4.2.1, COS12 (Android 5.0.2) und CM12.1 (Android 5.1.1) getestet - alle mit Play Store v6.0.5 1
  • erfordert ein gerootetes Android
  • Hier ist eine kurze Demo der Lösung

Beim Durchsuchen des Manifests von Play Store bin ich zu der Annahme gelangt, dass wahrscheinlich nur der folgende Dienst die automatische Aktualisierung von Apps über Wi-Fi initiiert.

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

Ich habe mit diesem Dienst unter wenigen Bedingungen auf verschiedenen Geräten gespielt und fand ihn für das betreffende Ziel nützlich. Es versteht sich von selbst, dass die Einstellung für die automatische Aktualisierung von Apps im Play Store auf "Apps nur über WLAN automatisch aktualisieren" festgelegt werden sollte.

Folgendes können Sie tun: Installieren Sie eine App, die eine Reihe von Aktionen ausführen kann, wenn Stromquelle und WLAN verbunden und später getrennt werden. Ich habe Tasker ( Testversion ; Userguide ) als Automatisierungs-App verwendet.

  • Profil: Richten Sie zwei Kontexte ein. Siehe So erstellen Sie ein Profil mit mehreren Kontexten in Tasker? für verwandte Hilfe

    • Zustand → Leistung → Quelle: Wählen Sie diese Option
    • Bundesland → Netz → WLAN-Verbindung → Geben Sie die erforderlichen Informationen ein oder lassen Sie alle oder einige davon unberührt

Wir würden zwei Aufgaben benötigen: eine Eintrittsaufgabe und eine Austrittsaufgabe. Siehe meine Antwort hier für verwandte Hilfe.

  • Aufgabe eingeben : (Aktionen):

    1. Code → Shell ausführen

      • Befehl:

        pm enable com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate;
        bin Force-Stop com.android.vending;
        bin startservice com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate
        
      • kreuzen Sie Use Root an
    2. Sie können optional eine oder mehrere Aktionen hinzufügen, um sich zu benachrichtigen, dass der Aktualisierungsvorgang begonnen hat. Ich habe Alert → Flash verwendet, um mich über einen Toast zu benachrichtigen.
  • Aufgabe beenden : (Aktionen):

    Für diese Aufgabe müssen die Busybox-Applets installiert sein. Siehe Wie installiere ich fehlende Befehlszeilentools auf einem Android-Gerät? für verwandte Hilfe.

    1. Netz → Netz testen

      • Typ: Mobile Daten aktiviert
      • Ergebnis speichern in: %Mdata
    2. Code → Shell ausführen

      • Befehl:

        SVC-Daten deaktivieren;
        svc wifi deaktivieren;
        bin Force-Stop com.android.vending;
        bin Force-Stop com.android.providers.downloads;
        down_path = $ (Inhaltsabfrage --uri content: // downloads / my_downloads --projection _data --where "notificationpackage = 'com.android.vending'");
        [["$ down_path"! = "Kein Ergebnis gefunden." ]] && echo $ down_path | sed 's /.*=// g' | xargs rm -f || Echo weiter;
        Inhalt löschen --uri Inhalt: // downloads / my_downloads --where "notificationpackage = 'com.android.vending'"
        pm disable com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate;
        svc wifi ermöglichen;
        [["% Mdata" == "yes"]] && svc data enable || Echo tut nichts;
        
      • kreuzen Sie Use Root an
    3. Um sich erneut zu benachrichtigen, verwenden Sie eine Aktion Ihrer Wahl.

Was machen diese Aufgaben?

Wenn die Bedingungen für beide Kontexte erfüllt sind, wird die Eingabetask ausgeführt. Die Befehle in dieser Task führen die folgenden Aktionen in sequenzieller Reihenfolge aus:

  • Aktivieren Sie den oben genannten Play Store-Dienst
  • Wiedergabestopp erzwingen
  • starte den besagten Play Store Dienst

Damit beginnt das automatische Update.

Nach der Aktivierung wird die Exit-Task ausgeführt, sobald das Profil deaktiviert wird (einfach weil eine Bedingung für einen Kontext nicht mehr erfüllt ist). Diese Exit-Task führt die folgenden Schritte nacheinander aus:

  • Speichern Sie den Status (aktiviert / deaktiviert) von mobilen Daten in einer Variablen Mdata
  • Die Aufgabe dieser Befehle ist:

    • mobile Daten deaktivieren
    • Deaktiviere WiFi
    • Wiedergabestopp erzwingen
    • Download-Manager erzwingen

    Ich habe festgestellt, dass, wenn ein Update (Download in Bearbeitung) für eine App aufgrund der Nichtverfügbarkeit von Wi-Fi unterbrochen wird, der Fortschrittsbalken (Benachrichtigung) ausgeblendet wird und der Status des Fortschritts in einer Zeile in der Tabelle Downloads von Datenbank- Downloads gespeichert wird .db . (Diese Datenbank befindet sich im Datenverzeichnis von Download Manager.) Diese Zeile enthält auch den Speicherort der teilweise heruntergeladenen Datei.

    Um sicherzustellen, dass die automatische Aktualisierung bei der nächsten erfolgreichen Wi-Fi-Verbindung nicht erfolgt, und um sicherzustellen, dass dies niemals geschieht, wenn das Profil die Eingabetask nicht ausführt, führen die folgenden Befehle aus:

    • Extrahieren Sie den Speicherort der teilweise heruntergeladenen Datei aus dem Wert in der Spalte _data, der einer Zeile entspricht, die durch com.android.vending als Benachrichtigungspaket gekennzeichnet ist. Wir sind bemüht, diese Datei zu löschen. Dies ist ein kleines Opfer.
    • Wenn sich unter _data tatsächlich ein Dateipfad befindet , löschen Sie damit die Datei, auf die er verweist .
    • Löschen Sie diese Zeile. Andernfalls wird sie vom Download Manager gelesen, wenn sich die Netzwerkverbindung ändert (erneut mit einem Wi-Fi verbunden) und die automatische Aktualisierung erneut gestartet wird.
    • Deaktivieren Sie den oben genannten Play Store-Dienst, damit die automatische Aktualisierung niemals von alleine beginnt
    • Aktivieren Sie Wi-Fi
    • Aktivieren Sie mobile Daten, wenn diese vor dem Ausführen dieser Aufgabe aktiviert wurden.

1 Zum Zeitpunkt der Erstellung der ersten Überarbeitung dieser Antwort ist die aktuelle Play Store-Version definitiv nicht 6.0.5, sondern höher. Bislang hat jedoch keines meiner Geräte ein weiteres Play Store-Update erhalten.

Feuerlord
quelle
Das Skript hat bei mir nicht funktioniert. Als kleiner Fehlerbehebungsschritt habe ich den Befehl "Inhaltsabfrage" manuell ausgeführt und festgestellt, dass er tatsächlich zur Zeichenfolge "Kein Ergebnis gefunden" führt, sodass die nächste Zeile "Inhalt löschen" seitdem nichts mehr tut Die IF-Bedingung ist nicht wahr.
prl77
2

Am nächsten ist es, zwei Einstellungen zu kombinieren. Ich mache das auf zwei Geräten, eines mit Android 4.4.4 (KitKat) und eines mit Android 5.0.2 (Lollipop).

  • Systemeinstellungen → WLAN → Erweitert → WLAN im Energiesparmodus aktivieren → Nur wenn angeschlossen
  • Play Store → Einstellungen → Apps automatisch aktualisieren → Apps nur über WLAN automatisch aktualisieren

Es scheint Updates zumindest ein wenig häufiger abzurufen, wenn es eingesteckt ist. Es ist nicht perfekt, aber keine schlechte halbe Lösung, und es erfordert weder Tasker noch Rooting.

Benjamin Oakes
quelle
0

Dies kann mit Tasker (Paid App) erreicht werden. In Tasker kann das Profil mit den folgenden Bedingungen definiert werden. Es hat wenig Lernkurve, aber diese App kann fast viele Apps ersetzen.

Unten ist das beispiel profil,

Wenn der Akku> X% und Wifi eingeschaltet ist und das Aufladen aktiviert ist

Aktivieren Sie die automatische Synchronisierung

Dies ist nur das Beispiel. Sie können die Bedingung basierend auf Ihrer Anforderung angeben. Da es sich um ein separates Thema handelt, möchte ich Sie dazu ermutigen, Tasker in XDA-Foren zu googeln.

Cyborgz
quelle
3
Würde dies nicht die automatische Synchronisierung für alle Daten aktivieren / deaktivieren? Alle anderen Dienste manuell aktualisieren zu müssen, damit der Play Store nicht automatisch aktualisiert wird, erscheint weniger als ideal.
Mr. Buster
0

Derzeit ist ein Ticket für Google Code geöffnet. Hoffentlich wird diese Funktion in einer zukünftigen Version hinzugefügt.

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

Wir s
quelle
1
Das Problem scheint geschlossen zu sein, ohne dass eine Lösung vorhanden oder im Endprodukt enthalten ist.
Firelord