En Android, ¿hay alguna forma de borrar todos los datos de las aplicaciones al mismo tiempo sin usar el restablecimiento de fábrica? Trabajo en una biblioteca y tenemos tabletas Android para que los usuarios las usen y después de que el usuario haya terminado de usar la tablet queremos borrar el nombre de usuario de todas las aplicaciones que el usuario haya usado para que su nombre de usuario no quede en la aplicación. Sé que el botón "Borrar datos" en el Administrador de aplicaciones borrará el nombre de usuario, pero tendríamos que hacer esto para cada aplicación y preferiría hacerlo en una instancia en lugar de uno a la vez. Cualquier ayuda será muy apreciada.
Respuesta
¿Demasiados anuncios?Eso podría hacerse a través de ADB y un poco de scripting - aunque actualmente no estoy seguro de si podría requerir Root (seguramente entiendes que no quiero probar eso en ninguno de mis dispositivos de trabajo ahora mismo ;):
#!/system/bin/sh
for app in $(pm list packages); do
pm clear ${app:8}
done
Este fragmento puede guardarse en un archivo (por ejemplo clear_data.sh
), o ejecutar directamente por copia-pega cuando se conecta al dispositivo utilizando adb shell
.
Alguna explicación de lo que hace, ya que hubo algún problema por parte del OP:
-
pm list packages
da una lista con los nombres de los paquetes de todas las aplicaciones instaladas, una por línea. -
for app in $(pm list packages); do
se repite la lista y se ejecuta el "comando interno" para cada paquete por separado -
pm clear ${app:8}
borra los datos de cada paquete especificado por$app
El corte de los 8 primeros caracteres (pm list
antepone a cada nombre de aplicación la cadenapackage:
que tenemos que cortar)
Para verificarlo en la línea de comandos, puede copiar y pegar la siguiente línea de comandos:
adb shell 'for app in $(pm list packages); do echo pm clear ${app:8}; done'
(nota: cuando se ejecuta desde una línea de comandos de Windows, tendrá que utilizar comillas dobles (¡gracias a Jesse por esta pista!) - en Linux/Unix/Mac mantén las comillas simples o las variables se expandirán "en el extremo equivocado")
Eso es un "simulacro", no hacer nada más que listado los comandos del bloque de código anterior se ejecutarían directamente. Podrías usar la salida de eso para borrar los datos de cada aplicación manualmente, escogiendo los que te interesan. 1
Para dar un ejemplo de comando producido por esto: pm clear com.facebook.katana
borraría los datos de la aplicación de Facebook.
1: Esto podría ser una parte importante, ya que el bucle realmente limpiaría los datos de todo aplicaciones (incluidas las del sistema), lo que podría no ser exactamente lo que buscas. Puedes restringirlo automáticamente, por ejemplo, a las aplicaciones de usuario, pasando el parámetro -3
(para "sólo aplicaciones de terceros") al pm list
es decir, el comando pm list packages -3
.