16 votos

¿Cómo permitir la actualización automática de aplicaciones en Play Store sólo cuando se conecta?

Me gustaría que las aplicaciones se actualizaran automáticamente cuando mi teléfono esté enchufado (cargando) y con wifi. Puedo permitir fácilmente la actualización automática sólo cuando el wifi está encendido con la opción apropiada en la configuración de Play Store, pero no evitar que las actualizaciones automáticas se produzcan si el teléfono está funcionando con la batería.

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

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

4voto

Firelord Puntos 161

Nota :

Siguiendo la solución:

  • se ha probado 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í es una breve demostración de la solución

Al navegar por el manifiesto de Play Store, tomé una conjetura de que sólo el siguiente servicio es probable que el iniciador de la auto-actualización de aplicaciones a través de Wi-Fi.

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

He jugado con ese servicio bajo algunas condiciones en diferentes dispositivos y lo he encontrado útil para el objetivo en cuestión. No hace falta decir que la configuración de la actualización automática de las aplicaciones debe estar configurada como "Actualización automática de aplicaciones solo por Wi-Fi" en Play Store.

Esto es lo que puedes hacer: Instalar un automatización aplicación que puede ejecutar una serie de acciones cuando la fuente de alimentación y el Wi-Fi están conectados y, posteriormente, desconectados. He utilizado Tasker ( versión de prueba ; guía del usuario ) como la aplicación de automatización.

  • Perfil: Configurar dos contextos. Véase ¿Cómo crear un perfil con múltiples contextos en Tasker? para cualquier ayuda relacionada

    • Estado → Poder → Fuente: elíjalo
    • Estado → Red → Wifi Conectado → rellene los detalles según sus necesidades o deje todos o alguno de ellos sin tocar

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

  • Introduzca la tarea : (Acciones):

    1. Código → Ejecutar Shell

      • Comando:

        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
      • garrapata Uso root

    2. Puede añadir opcionalmente una o más acciones para notificarse a sí mismo que el procedimiento de actualización ha comenzado. He utilizado Alerta → Flash para notificarme a través de un brindis.
  • Tarea de salida : (Acciones):

    Esta tarea requiere Los applets de Busybox instalados. Ver ¿Cómo puedo instalar 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
      • Almacenar el resultado en: %Mdata
    2. Código → Ejecutar Shell

      • Comando:

        svc data disable;
        svc wifi disable;
        am force-stop com.android.vending;
        am force-stop com.android.providers.downloads;
        down\_path=$(content query --uri content://downloads/my\_downloads --projection \_data --where "notificationpackage='com.android.vending'");
        \[\[ "$down\_path" != "No result found." \]\] && echo $down\_path | sed 's/.\*=//g' | xargs rm -f || echo continue;
        content delete --uri content://downloads/my\_downloads --where "notificationpackage='com.android.vending'"
        pm disable com.android.vending/com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager\\$CheckWifiAndAutoUpdate;
        svc wifi enable;
        \[\[ "%Mdata" == "yes" \]\] && svc data enable || echo doing nothing;
      • garrapata Uso root

    3. De nuevo, para notificarse, utilice cualquier acción de su elección.

¿Qué hacen esas tareas?

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

  • habilitar el mencionado servicio de Play Store
  • forzar la parada de Play Store
  • iniciar el servicio de dicha 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) se ejecutaría la tarea de salida. Esa tarea de salida ejecuta los siguientes pasos en orden secuencial:

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

    • desactivar los datos móviles
    • desactivar el Wi-Fi
    • forzar la parada de Play Store
    • forzar la detención del gestor de descargas

    Me he dado cuenta de que si una actualización (descarga en curso) de una aplicación se interrumpe 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 de la tabla descargas de la base 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 auto-actualización no se produce en la próxima conexión exitosa a Wi-Fi y asegurarse de que nunca lo hace cuando el perfil no está ejecutando la tarea de entrada, lo siguiente es lo que hace el resto de los comandos:

    • extraer la ubicación del archivo parcialmente descargado a partir del valor de la columna _data correspondiente a una fila identificada por com.Android.vending como notificationpackage. Nuestro objetivo es eliminar ese archivo. Este es un pequeño sacrificio que hay que hacer.
    • si efectivamente existe una ruta de acceso al archivo bajo Datos y luego utilizarlo para eliminar el archivo apuntado por él.
    • elimine esa fila, de lo contrario, será leída por el Gestor de Descargas cuando cambie la conectividad de la red (vuelva a conectarse a una Wi-Fi) y la actualización automática comenzaría de nuevo.
    • desactivar el mencionado servicio de Play Store para que la actualización automática nunca comience por sí sola
    • activar el Wi-Fi
    • habilitar 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 no es definitivamente la 6.0.5 sino la superior. Sin embargo, ninguno de mis dispositivos ha recibido ninguna otra actualización de Play Store hasta ahora.

0 votos

El script no funcionaba para mí, así que como un pequeño paso de solución de problemas, corrí el comando "content query" manualmente y noté que efectivamente resulta en la cadena "No se encontró ningún resultado", así que la siguiente línea "content delete" no hace nada ya que la condición IF no es verdadera.

2voto

Benjamin Oakes Puntos 111

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

  • Ajustes del sistema → Wi-Fi → Avanzado → Mantener Wi-Fi activado durante el reposo → Solo cuando está enchufado
  • Play Store → Ajustes → Actualizar automáticamente las aplicaciones → Actualizar automáticamente las aplicaciones solo por Wi-Fi.

Parece que recoge las 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.

0voto

Cyborgz Puntos 185

Esto se puede lograr utilizando Tasker (aplicación de pago). En Tasker, el perfil se puede definir con 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 El Wifi está activado y La carga está activada

Activar la sincronización automática

Esto es sólo el ejemplo, puede especificar la condición basada en su requisito. Dado que este es un tema separado, me gustaría animar a Google Tasker en foros xda.

3 votos

¿No sería esto habilitar/deshabilitar toda la sincronización automática para todos los datos? Tener que actualizar manualmente cada servicio para que la Play Store no se actualice automáticamente no parece lo ideal.

0voto

Wes Puntos 11

Hay un ticket abierto en Google Code, así que esperamos que esta función se añada en una futura versión.

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

1 votos

El tema parece estar cerrado sin que haya solución ni en el producto final.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X