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 automatyzacji, 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.
Potrzebowalibyśmy dwóch zadań: zadania wejścia i wyjścia. Zobacz moją odpowiedź tutaj, aby uzyskać powiązaną pomoc.
Wprowadź zadanie : (akcje):
Kod → Uruchom Shell
- 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.
Sieć → Sieć testowa
- Typ: Dane mobilne włączone
- Wynik sklepu w:
%Mdata
Kod → Uruchom Shell
- 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
_data
odpowiadają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.