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.
Necesitaríamos dos tareas: una de entrada y otra de salida. Ver mi respuesta aquí para obtener ayuda relacionada.
-
Introduzca la tarea : (Acciones):
-
Código → Ejecutar Shell
- 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.
-
Red → Red de prueba
- Tipo: Datos móviles habilitados
- Almacenar el resultado en:
%Mdata
-
Código → Ejecutar Shell
- 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.