Come consentire l'aggiornamento automatico delle app nel Play Store solo quando è collegato?


14

Vorrei che le app si aggiornassero automaticamente quando il mio telefono è collegato (in carica) e su wifi. Posso facilmente consentire l'aggiornamento automatico solo quando il wifi è attivo con l'opzione appropriata nelle impostazioni del Play Store, ma non impedire che si verifichino aggiornamenti automatici se il telefono funziona a batteria.

Ciò sta causando un inutile consumo della batteria quando sto usando il mio telefono sul wifi a casa. Dato che l'aggiornamento automatico delle app è più un lavoro daemon che un compito critico in termini di tempo, non posso credere che non sia una strategia standard di risparmio energetico.

Conosci qualche soluzione alternativa al sistema (incluso se il dispositivo è rootato) per raggiungere questo obiettivo?

Risposte:


4

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 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.

  • Profilo: imposta due contesti. Vedi Come creare un profilo con più contesti in Tasker? per qualsiasi aiuto correlato

    • Stato → Potenza → Sorgente: sceglierlo
    • Stato → Rete → Wifi connesso → inserisci i dettagli in base alle tue esigenze o lasciali tutti o parte intatti

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):

    1. Codice → Esegui shell

      • Comando:

        pm abilita com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate;
        am force-stop com.android.vending;
        am openservice com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate
        
      • spuntare Usa radice
    2. 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.

    1. Rete → Rete di prova

      • Tipo: dati mobili abilitati
      • Memorizza risultati in: %Mdata
    2. Codice → Esegui shell

      • Comando:

        disabilitazione dati svc;
        svc wifi disabilitato;
        am force-stop com.android.vending;
        am force-stop com.android.providers.downloads;
        down_path = $ (query di contenuti --uri content: // download / my_downloads --projection _data --where "notificationpackage = 'com.android.vending'");
        [["$ down_path"! = "Nessun risultato trovato." ]] && echo $ down_path | sed 's /.*=// g' | xargs rm -f || l'eco continua;
        content delete --uri content: // downloads / my_downloads --where "notificationpackage = 'com.android.vending'"
        pm disabilita com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate;
        abilitazione wifi svc;
        [["% Mdata" == "yes"]] && svc data enable || l'eco non fa nulla;
        
      • spuntare Usa radice
    3. 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 _datacorrispondente 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.


Lo script non funzionava per me, quindi, come un piccolo passaggio per la risoluzione dei problemi, ho eseguito manualmente il comando "query di contenuto" e ho notato che in effetti ha come risultato la stringa "Nessun risultato trovato", quindi la riga successiva "eliminazione del contenuto" non fa nulla da allora la condizione IF non è vera.
prl77,

2

Il più vicino a cui sono arrivato sta combinando due impostazioni. Lo faccio su due dispositivi, uno con Android 4.4.4 (KitKat) e un altro con Android 5.0.2 (Lollipop).

  • Impostazioni di sistema → Wi-Fi → Avanzate → Mantieni Wi-Fi attivo durante la sospensione → Solo quando è collegato
  • Play Store → Impostazioni → Aggiorna automaticamente le app → Aggiorna automaticamente le app solo tramite Wi-Fi

Sembra che raccolga gli aggiornamenti almeno un po 'più spesso quando è collegato. Non è perfetto, ma non è una cattiva mezza soluzione e non richiede Tasker o il rooting.


0

Ciò può essere ottenuto utilizzando Tasker (app a pagamento). In Tasker, il profilo può essere definito con le seguenti condizioni. Ha una piccola curva di apprendimento, ma questa App può sostituire quasi molte app.

Di seguito è riportato il profilo di esempio,

Quando la batteria> X% e Wifi è attiva e la ricarica è abilitata

Abilita sincronizzazione automatica attivata

Questo è solo quello di esempio, è possibile specificare la condizione in base alle proprie esigenze. Dal momento che questo è un argomento separato, ti incoraggio a Google Tasker nei forum XDA.


3
Ciò non abiliterebbe / disabiliterebbe tutta la sincronizzazione automatica per tutti i dati? Dover aggiornare manualmente ogni altro servizio solo in modo che il Play Store non si aggiorni automaticamente non sembra l'ideale.
Mr. Buster,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.