Jak zezwolić na automatyczną aktualizację aplikacji w Sklepie Play tylko po podłączeniu?

14

Chciałbym, aby aplikacje były aktualizowane automatycznie, gdy mój telefon jest podłączony (ładowanie) i przez Wi-Fi. Mogę z łatwością zezwolić na automatyczną aktualizację tylko wtedy, gdy Wi-Fi jest włączone z odpowiednią opcją w ustawieniach Sklepu Play, ale nie mogę zapobiec automatycznej aktualizacji, jeśli telefon działa na baterii.

Powoduje to niepotrzebne zużycie baterii, gdy w domu korzystam z telefonu przez Wi-Fi. Biorąc pod uwagę, że automatyczne aktualizowanie aplikacji jest bardziej zadaniem demonicznym niż zadaniem krytycznym czasowo, nie mogę uwierzyć, że nie jest to standardowa strategia oszczędzania energii.

Czy znasz jakieś aplikacje lub obejście systemu (w tym jeśli urządzenie jest zrootowane), aby to osiągnąć?

Erwin Mayer
źródło

Odpowiedzi:

4

Uwaga :

Następujące rozwiązanie:

  • jest testowany na Androidzie 4.2.1, COS12 (Android 5.0.2) i CM12.1 (Android 5.1.1) - wszystkie z nich działają w Play Store v6.0.5 1
  • wymaga zrootowanego Androida
  • oto krótka wersja demonstracyjna rozwiązania

Przeglądając manifest Sklepu Play, zgadłem, że tylko następująca usługa jest prawdopodobnie inicjatorem automatycznej aktualizacji aplikacji przez Wi-Fi.

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

Grałem z tą usługą pod kilkoma warunkami na różnych urządzeniach i uznałem ją za przydatną do danego celu. Oczywiste jest, że ustawienie automatycznej aktualizacji aplikacji powinno być ustawione na „Automatycznie aktualizuj aplikacje tylko przez Wi-Fi” w Sklepie Play.

Oto, co możesz zrobić: zainstaluj aplikację do która może wykonywać szereg działań, gdy źródło zasilania i Wi-Fi są podłączone, a później odłączone. Użyłem Taskera ( wersja próbna ; instrukcja użytkownika ) jako aplikacji do automatyzacji.

  • Profil: skonfiguruj dwa konteksty. Zobacz Jak utworzyć profil z wieloma kontekstami w Tasker? za wszelką powiązaną pomoc

    • Stan → Moc → Źródło: wybierz
    • Stan → Sieć → Połączenie Wi-Fi → wypełnij dane zgodnie ze swoimi potrzebami lub pozostaw wszystkie lub dowolne z nich bez zmian

Potrzebowalibyśmy dwóch zadań: zadania wejścia i wyjścia. Zobacz moją odpowiedź tutaj, aby uzyskać powiązaną pomoc.

  • Wprowadź zadanie : (akcje):

    1. Kod → Uruchom Shell

      • Komenda:

        pm włącz com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate;
        jestem force-stop com.android.vending;
        jestem startservice com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate
        
      • zaznacz Użyj roota
    2. Możesz opcjonalnie dodać jedno lub więcej działań, aby powiadomić siebie, że procedura aktualizacji się rozpoczęła. Użyłem Alert → Flash, aby powiadomić się za pomocą toastu.
  • Wyjdź z zadania : (akcje):

    To zadanie wymaga zainstalowanych apletów Busybox. Zobacz Jak zainstalować brakujące narzędzia wiersza poleceń na urządzeniu z Androidem? za pokrewną pomoc.

    1. Sieć → Sieć testowa

      • Typ: Dane mobilne włączone
      • Wynik sklepu w: %Mdata
    2. Kod → Uruchom Shell

      • Komenda:

        wyłączanie danych svc;
        svc wifi disable;
        jestem force-stop com.android.vending;
        am force-stop com.android.providers.downloads;
        down_path = $ (zapytanie o treść - zawartość content: // download / my_downloads --projection _data --where "notyfikacja = = com.android.vending '”);
        [["$ down_path"! = "Nie znaleziono wyników." ]] && echo $ down_path | sed 's /.*=// g' | xargs rm -f || echo kontynuuj;
        usuń zawartość --uri treść: // download / my_downloads --where "notyfikacja = = com.android.vending '”
        pm wyłącz com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate;
        svc wifi enable;
        [["% Mdata" == "tak"]] Włączenie && svc danych || echo nic nie robi;
        
      • zaznacz Użyj roota
    3. Ponownie, aby powiadomić siebie, użyj dowolnej wybranej akcji.

Co robią te zadania?

Po spełnieniu warunków dla obu kontekstów uruchamiane jest zadanie Enter. Polecenia w tym zadaniu wykonują następujące czynności w kolejności sekwencyjnej:

  • włączyć wyżej wymienioną usługę Sklep Play
  • force-stop Sklep Play
  • uruchom wspomnianą usługę Sklep Play

I to wszystko, aby rozpocząć automatyczną aktualizację.

Po pozostaniu aktywowanym, ilekroć profil się dezaktywuje (po prostu dlatego, że warunek kontekstu już nie spełnia), zadanie wyjścia zostanie uruchomione. To zadanie wyjścia wykonuje następujące kroki w kolejności sekwencyjnej:

  • przechowywać stan (włączony / wyłączony) danych mobilnych w zmiennej Mdata
  • zadaniem tych poleceń jest:

    • wyłącz komórkową transmisję danych
    • wyłącz Wi-Fi
    • force-stop Sklep Play
    • wymuszone zatrzymanie Menedżera pobierania

    Zauważyłem, że jeśli zmiana (pobierz w toku) dla aplikacji zostanie przerwany z powodu niedostępności Wi-Fi, na pasku postępu (zgłoszenia) zostaje odrzucona, status postępu dostaje przechowywane w wierszu w tabeli pobrania bazy danych do pobrania db . (Ta baza danych znajduje się w katalogu danych Download Managera.) Ten wiersz zawiera także lokalizację częściowo pobranego pliku.

    Aby upewnić się, że automatyczna aktualizacja nie pojawi się przy następnym udanym połączeniu z Wi-Fi i upewnić się, że nigdy tak się nie stanie, gdy profil nie uruchamia zadania wchodzenia, następujące czynności wykonują pozostałe polecenia:

    • wyodrębnij lokalizację częściowo pobranego pliku z wartości w kolumnie _dataodpowiadającej wierszowi określonemu przez com.android.vending jako pakiet powiadomień. Naszym celem jest usunięcie tego pliku. To jest małe poświęcenie.
    • jeśli rzeczywiście w ścieżce _data istnieje ścieżka do pliku , użyj jej, aby usunąć wskazany przez nią plik.
    • usuń ten wiersz, w przeciwnym razie zostanie odczytany przez Menedżera pobierania, gdy zmieni się łączność sieciowa (ponownie połączona z Wi-Fi) i rozpocznie się automatyczna aktualizacja.
    • wyłącz wyżej wymienioną usługę Sklep Play, aby automatyczna aktualizacja nigdy się nie rozpoczęła
    • włączyć Wi-Fi
    • włącz komórkową transmisję danych, jeśli została włączona przed uruchomieniem tego zadania.

1 W momencie tworzenia pierwszej wersji tej odpowiedzi aktualna wersja Sklepu Play na pewno nie jest w wersji 6.0.5, ale nowszej. Jednak żadne z moich urządzeń nie otrzymało do tej pory żadnej dalszej aktualizacji w Sklepie Play.

Firelord
źródło
Skrypt nie działał dla mnie, więc jako mały krok do rozwiązania problemu, ręcznie uruchomiłem polecenie „zapytanie o treść” i zauważyłem, że rzeczywiście skutkuje ciągiem „Nie znaleziono wyniku”, więc następny wiersz „usuwanie treści” nic nie robi, ponieważ warunek JEŻELI nie jest spełniony.
prl77
2

Najbliższe, jakie przyszedłem, to połączenie dwóch ustawień. Robię to na dwóch urządzeniach, jednym z Androidem 4.4.4 (KitKat) i innym z Androidem 5.0.2 (Lollipop).

  • Ustawienia systemowe → Wi-Fi → Zaawansowane → Włącz Wi-Fi podczas snu → Tylko po podłączeniu
  • Sklep Play → Ustawienia → Automatycznie aktualizuj aplikacje → Automatycznie aktualizuj aplikacje tylko przez Wi-Fi

Wydaje się, że pobiera aktualizacje przynajmniej trochę częściej, gdy jest podłączony. Nie jest idealny, ale nie jest złym pół-rozwiązaniem i nie wymaga Taskera ani rootowania.

Benjamin Oakes
źródło
0

Można to osiągnąć za pomocą Tasker (płatna aplikacja). W Tasker profil można zdefiniować, spełniając następujące warunki. Ma małą krzywą uczenia się, ale ta aplikacja może zastąpić prawie wiele aplikacji.

Poniżej znajduje się przykładowy profil,

Gdy bateria> X% i Wi-Fi jest włączone, a ładowanie jest włączone

Włącz automatyczną synchronizację

To jest tylko przykład, możesz określić warunek w oparciu o swoje wymagania. Ponieważ jest to osobny temat, zachęcam do skorzystania z Google Tasker na forach XDA.

Cyborgz
źródło
3
Czy to nie włącza / wyłącza wszystkich automatycznych synchronizacji wszystkich danych? Konieczność ręcznego odświeżania każdej innej usługi tylko po to, aby Sklep Play nie aktualizował się automatycznie, wydaje się mniej niż idealny.
Pan Buster