Nota :
Seguente soluzione:
- è testato su Android 4.2.1, COS12 (Android 5.0.2) e CM12.1 (Android 5.1.1) - tutti con Play Store v6.0.5 1
- richiede un Android con root
- ecco una breve demo della soluzione
Durante la navigazione nel manifest del Play Store, ho pensato che solo il seguente servizio è probabilmente l'iniziatore dell'aggiornamento automatico delle app tramite Wi-Fi.
com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager$CheckWifiAndAutoUpdate
Ho giocato con quel servizio in poche condizioni su diversi dispositivi e l'ho trovato utile per l'obiettivo in questione. Va da sé che l'impostazione di aggiornamento automatico delle app dovrebbe essere impostata su "Aggiorna automaticamente le app solo su Wi-Fi" nel Play Store.
Ecco cosa puoi fare: Installa un'app di automazione in grado di eseguire una serie di azioni quando la fonte di alimentazione e il Wi-Fi sono collegati e, successivamente, disconnessi. Ho usato Tasker ( versione di prova ; guida utente ) come app di automazione.
Avremmo bisogno di due compiti: un compito di entrata e un compito di uscita. Vedi la mia risposta qui per un aiuto correlato.
Inserisci attività : (Azioni):
Codice → Esegui shell
- Se lo desideri, puoi aggiungere una o più azioni per notificarti che la procedura di aggiornamento è iniziata. Ho usato Alert → Flash per avvisarmi tramite un brindisi.
Esci dall'attività : (Azioni):
Questa attività richiede l'installazione delle applet di Busybox. Vedi Come installo gli strumenti della riga di comando mancanti su un dispositivo Android? per aiuto correlato.
Rete → Rete di prova
- Tipo: dati mobili abilitati
- Memorizza risultati in:
%Mdata
Codice → Esegui shell
- Ancora una volta, per notificarti, usa qualsiasi azione di tua scelta.
Cosa fanno questi compiti?
Quando vengono soddisfatte le condizioni per entrambi i contesti, viene eseguita l'attività di immissione. I comandi in quell'attività fanno queste cose in ordine sequenziale:
- abilitare il suddetto servizio del Play Store
- forza-stop Play Store
- avviare il servizio Play Store detto
E questo è tutto per l'inizio dell'aggiornamento automatico.
Dopo essere rimasto attivato, ogni volta che il profilo si disattiva (semplicemente perché una condizione per un contesto non soddisfa più) l'attività di esecuzione verrà eseguita. L'attività di uscita esegue i seguenti passaggi in ordine sequenziale:
- memorizzare lo stato (abilitato / disabilitato) dei dati mobili in un Mdata variabile
il compito di questi comandi è:
- disabilitare i dati mobili
- disabilita il Wi-Fi
- forza-stop Play Store
- Force-stop Download Manager
Ho notato che se un aggiornamento (download in corso) per un app è interrotto a causa di indisponibilità di Wi-Fi, la barra di avanzamento (notifica) viene respinto, lo stato dei progressi viene memorizzato in una riga della tabella download di database di download .db . (Tale database si trova nella directory dei dati di Download Manager.) Questa riga contiene anche la posizione del file parzialmente scaricato.
Per assicurarsi che l'aggiornamento automatico non si verifichi alla successiva connessione riuscita al Wi-Fi e assicurandosi che non lo faccia mai quando il profilo non esegue l'attività di immissione, di seguito è riportato ciò che fanno gli altri comandi:
- estrarre la posizione del file parzialmente scaricato dal valore nella colonna
_data
corrispondente a una riga identificata da com.android.vending come notificationpackage. Miriamo a eliminare quel file. Questo è un piccolo sacrificio da fare.
- se esiste effettivamente un percorso di file in _data , quindi utilizzarlo per eliminare il file indicato da esso.
- elimina quella riga, altrimenti verrà letta da Download Manager quando cambia la connettività di rete (ricollegata a una rete Wi-Fi) e ricomincia l'aggiornamento automatico.
- disabilitare il suddetto servizio Play Store in modo che l'aggiornamento automatico non inizi mai da solo
- abilita Wi-Fi
- abilitare i dati mobili, se sono stati abilitati prima di eseguire questa attività.
1 Al momento della creazione della prima revisione di questa risposta, l'attuale versione del Play Store non è sicuramente la 6.0.5 ma sopra. Tuttavia, finora nessuno dei miei dispositivi ha ricevuto ulteriori aggiornamenti sul Play Store.