¿Cómo permitir la actualización automática de aplicaciones en Play Store solo cuando está enchufado?

14

Me gustaría que las aplicaciones se actualicen automáticamente cuando mi teléfono esté enchufado (cargando) y en wifi. Puedo permitir fácilmente la actualización automática solo cuando el wifi está activado con la opción adecuada en la configuración de Play Store, pero no puedo evitar que se realicen actualizaciones automáticas si el teléfono funciona con batería.

Esto está causando una descarga innecesaria de la batería cuando estoy usando mi teléfono con wifi en casa. Dado que las aplicaciones de actualización automática son más un trabajo de demonio que una tarea de tiempo crítico, no puedo creer que no sea una estrategia estándar de ahorro de energía.

¿Conoces alguna aplicación o solución del sistema (incluso si el dispositivo está rooteado) para lograr esto?

Erwin Mayer
fuente

Respuestas:

4

Nota :

Siguiente solución:

  • se prueba en Android 4.2.1, COS12 (Android 5.0.2) y CM12.1 (Android 5.1.1); todos ellos ejecutan Play Store v6.0.5 1
  • requiere un Android rooteado
  • Aquí hay una breve demostración de la solución

Mientras navegaba por el manifiesto de Play Store, tuve la suposición de que solo el siguiente servicio es probablemente el iniciador de la actualización automática de aplicaciones a través de Wi-Fi.

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

Jugué con ese servicio en pocas condiciones en diferentes dispositivos y lo encontré útil para el objetivo en cuestión. No hace falta decir que la configuración de actualización automática de las aplicaciones debe establecerse en "Actualización automática de aplicaciones solo a través de Wi-Fi" en Play Store.

Esto es lo que puede hacer: instale una aplicación de que pueda ejecutar una serie de acciones cuando la fuente de alimentación y el Wi-Fi estén conectados y luego desconectados. Solía Tasker ( versión de prueba ; userguide ) como la aplicación de automatización.

Necesitaríamos dos tareas: una tarea de entrada y una tarea de salida. Vea mi respuesta aquí para obtener ayuda relacionada.

  • Ingrese la tarea : (Acciones):

    1. Código → Ejecutar Shell

      • Mando:

        pm enable com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate;
        am force-stop com.android.vending;
        am startservice com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate
        
      • marque Usar raíz
    2. Opcionalmente, puede agregar una o más acciones para notificarse que el procedimiento de actualización ha comenzado. Usé Alert → Flash para notificarme a mí mismo a través de un brindis.
  • Tarea de salida : (Acciones):

    Esta tarea requiere que se instalen los applets de Busybox. Consulte ¿Cómo instalo las herramientas de línea de comandos que faltan en un dispositivo Android? para ayuda relacionada.

    1. Net → Test Net

      • Tipo: Datos móviles habilitados
      • Almacenar resultado en: %Mdata
    2. Código → Ejecutar Shell

      • Mando:

        deshabilitar datos de svc;
        svc wifi deshabilitar;
        am force-stop com.android.vending;
        soy force-stop com.android.providers.downloads;
        down_path = $ (consulta de contenido --uri content: // downloads / my_downloads --projection _data --where "notifypackage = 'com.android.vending'");
        [["$ down_path"! = "No se encontraron resultados". ]] && echo $ down_path | sed 's /.*=// g' | xargs rm -f || eco continuar;
        content delete --uri content: // downloads / my_downloads --where "notifypackage = 'com.android.vending'"
        pm deshabilitar com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate;
        svc wifi enable;
        [["% Mdata" == "yes"]] && svc data enable || echo sin hacer nada;
        
      • marque Usar raíz
    3. Nuevamente, para notificarte a ti mismo, usa cualquier acción que elijas.

¿Qué hacen esas tareas?

Cuando se cumplen las condiciones para ambos contextos, se ejecuta la tarea enter. Los comandos en esa tarea hacen estas cosas en orden secuencial:

  • habilitar el servicio de Play Store mencionado anteriormente
  • forzar-detener Play Store
  • iniciar dicho servicio de Play Store

Y eso es todo para que comience la actualización automática.

Después de permanecer activado, cada vez que el perfil se desactiva (simplemente porque una condición para un contexto ya no se cumple) la tarea de salida se ejecutará. Esa tarea de salida ejecuta los siguientes pasos en orden secuencial:

  • almacenar el estado (habilitado / deshabilitado) de datos móviles en una variable Mdata
  • el trabajo de esos comandos es:

    • deshabilitar datos móviles
    • deshabilitar Wi-Fi
    • forzar-detener Play Store
    • gestor de descargas de detención forzada

    Me di cuenta de que si hay una actualización (descarga en curso) para una aplicación se interrumpe debido a la falta de disponibilidad de Wi-Fi, la barra de progreso (notificación) se desestimó, el estado de avance se almacena en una fila en la tabla de descargas de bases de datos descargas .db . (Esa base de datos se encuentra en el directorio de datos de Download Manager). Esa fila también contiene la ubicación del archivo parcialmente descargado.

    Para asegurarse de que la actualización automática no ocurra en la próxima conexión exitosa a Wi-Fi y asegurarse de que nunca lo haga cuando el perfil no esté ejecutando la tarea enter, lo siguiente es lo que hacen el resto de los comandos:

    • extraer la ubicación del archivo parcialmente descargado del valor en la columna _datacorrespondiente a una fila identificada por com.android.vending como paquete de notificaciones. Nuestro objetivo es eliminar ese archivo. Este es un pequeño sacrificio para hacer.
    • si de hecho hay una ruta de archivo debajo de _data , úsela para eliminar el archivo señalado por ella.
    • elimine esa fila, de lo contrario, Download Manager la leerá cuando cambie la conectividad de la red (reconectada a un Wi-Fi) y la actualización automática comenzará nuevamente.
    • deshabilite el servicio de Play Store antes mencionado para que la actualización automática nunca comience por sí sola
    • habilitar Wi-Fi
    • habilitar datos móviles, si se habilitaron antes de ejecutar esta tarea.

1 En el momento de crear la primera revisión de esta respuesta, la versión actual de Play Store definitivamente no es 6.0.5 sino superior. Sin embargo, ninguno de mis dispositivos ha recibido más actualizaciones de Play Store hasta el momento.

Señor del fuego
fuente
El script no funcionaba para mí, así que solo como un pequeño paso de solución de problemas, ejecuté el comando "consulta de contenido" manualmente y noté que efectivamente da como resultado la cadena "No se encontró resultado", por lo que la siguiente línea "eliminar contenido" no hace nada ya que La condición IF no es verdadera.
prl77
2

Lo más cerca que he estado es combinar dos configuraciones. Hago esto en dos dispositivos, uno con Android 4.4.4 (KitKat) y otro con Android 5.0.2 (Lollipop).

  • Configuración del sistema → Wi-Fi → Avanzado → Mantener Wi-Fi encendido durante la suspensión → Solo cuando está enchufado
  • Play Store → Configuración → Actualización automática de aplicaciones → Actualización automática de aplicaciones solo a través de Wi-Fi

Parece recoger actualizaciones al menos un poco más a menudo cuando está enchufado. No es perfecto, pero no es una mala solución a medias, y no requiere Tasker o rooting.

Benjamin Oakes
fuente
0

Esto se puede lograr usando Tasker (aplicación de pago). En Tasker, el perfil puede definirse teniendo las siguientes condiciones. Tiene poca curva de aprendizaje, pero esta aplicación puede reemplazar casi muchas aplicaciones.

A continuación se muestra el perfil de muestra,

Cuando Batería> X% y Wifi está ENCENDIDO y la Carga está habilitada

Habilitar sincronización automática activada

Este es solo el ejemplo, puede especificar la condición según sus requisitos. Dado que este es un tema separado, te animo a que busques en google tasker en foros xda.

Cyborgz
fuente
3
¿No habilitaría / deshabilitaría toda la sincronización automática para todos los datos? Tener que actualizar manualmente cualquier otro servicio solo para que Play Store no se actualice automáticamente parece menos que ideal.
Sr. Buster