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

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 produzcan actualizaciones automáticas si el teléfono está funcionando con batería.

Esto está causando un agotamiento innecesario de la batería cuando estoy usando mi teléfono con wifi en casa. Dado que la actualización automática de aplicaciones es 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.

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

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 con 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, adiviné 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 bajo 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 "Actualizar automáticamente las aplicaciones solo a través de Wi-Fi" en Play Store.

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

  • Perfil: Configure dos contextos. Consulte ¿Cómo crear un perfil con contexto múltiple en Tasker? para cualquier ayuda relacionada

    • Estado → Potencia → Fuente: elíjalo
    • Estado → Red → Wifi conectado → complete los detalles según sus necesidades o deje todos o alguno de ellos intactos

Estaríamos necesitando 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

      • Dominio:

        pm habilitar com.android.vending/com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager\$CheckWifiAndAutoUpdate;
        soy force-stop com.android.vending;
        soy 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 a sí mismo que el procedimiento de actualización ha comenzado. Usé Alert → Flash para notificarme a mí mismo a través de un brindis.
  • Salir de la tarea : (Acciones):

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

    1. Red → Red de prueba

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

      • Dominio:

        deshabilitación de datos de svc;
        deshabilitar wifi svc;
        soy 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 "notificationpackage='com.android.vending'");
        [[ "$down_path" != "No se encontró ningún resultado". ]] && echo $camino_descendente | sed 's/.*=//g' | xargs rm -f || eco continuar;
        eliminación de contenido --uri content://downloads/my_downloads --where "notificationpackage='com.android.vending'"
        pm inhabilite com.android.vending/com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager\$CheckWifiAndAutoUpdate;
        habilitar wifi svc;
        [[ "%Mdata" == "sí" ]] && habilitación de datos de svc || echo sin hacer nada;
        
      • marque Usar raíz
    3. Nuevamente, para notificarte a ti mismo, usa cualquier acción de tu elección.

¿Qué hacen esas tareas?

Cuando se cumplen las condiciones para ambos contextos, se ejecuta la tarea de entrada. 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, siempre que el perfil se desactive (simplemente porque una condición para un contexto ya no se cumple) se ejecutará la tarea de salida. Esa tarea de salida ejecuta los siguientes pasos en orden secuencial:

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

    • deshabilitar datos móviles
    • deshabilitar wifi
    • forzar-detener Play Store
    • Gestor de descargas de detención forzada

    Noté que si se interrumpe una actualización (descarga en progreso) de una aplicación debido a la falta de disponibilidad de Wi-Fi, la barra de progreso (notificación) se descarta, el estado del progreso se almacena en una fila en la tabla de descargas de la base de datos . .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 descargado parcialmente.

    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 de ingreso, lo siguiente es lo que hacen el resto de los comandos:

    • extraiga 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 que hacer.
    • si de hecho hay una ruta de archivo en _data , utilícela para eliminar el archivo al que apunta.
    • elimine esa fila, de lo contrario, el Administrador de descargas la leerá cuando cambie la conectividad de la red (se vuelva a conectar a un Wi-Fi) y la actualización automática comenzará nuevamente.
    • deshabilite el servicio Play Store mencionado anteriormente para que la actualización automática nunca comience por sí sola
    • habilitar wifi
    • habilite los datos móviles, si estaban habilitados 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.

La secuencia de comandos 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ó ningún resultado", por lo que la siguiente línea "eliminación de contenido" no hace nada desde la condición SI no es verdadera.

Lo más cerca que he llegado es la combinación de 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 activado durante la suspensión → Solo cuando está enchufado
  • Play Store → Configuración → Aplicaciones de actualización automática → Aplicaciones de actualización automática solo a través de Wi-Fi

Parece recibir 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 ni rooteo.

Esto se puede lograr usando Tasker (aplicación paga). 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 la batería > X% y Wifi está ENCENDIDO y la carga está habilitada

Activar sincronización automática activada

Esta es solo la muestra, puede especificar la condición según sus requisitos. Dado que este es un tema aparte, lo animo a buscar en Google Tasker en los foros de xda.

¿Esto no habilitaría/deshabilitaría toda la sincronización automática para todos los datos? Tener que actualizar manualmente todos los demás servicios solo para que Play Store no se actualice automáticamente parece menos que ideal.

Hay un ticket abierto ahora en Google Code, por lo que esperamos que esta función se agregue en una versión futura.

https://code.google.com/archive/p/android-developer-preview/issues/1511

El problema parece estar cerrado sin que exista una solución ni en el producto final.