¿Limpiar la caché de la aplicación mediante programación?
Quiero escribir una utilidad en la que el usuario puede seleccionar un conjunto de aplicaciones instaladas y borrar sus cachés de datos, como por ejemplo la forma en que puede hacerlo manualmente mediante la pantalla de Configuración-> Aplicaciones integrada con el botón "Borrar caché".
¿Cómo puedo acceder a la cantidad de datos almacenados en caché que cada aplicación tiene y borrar mediante programación estos cachés?
- Técnica fiable para el seguimiento de invitaciones a instalaciones móviles
- ¿Cuáles son las limitaciones para el desarrollo de aplicaciones en el fuego en llamas?
- Mensaje de error: emulator-arm.exe ha dejado de funcionar
- ¿Por qué los navegadores móviles cargan mi página completamente ampliada?
- ¿Qué debo tener en cuenta al portar javascript mousedown / mouseup / mousemove / keypress oyentes a móviles?
- Trigger galaxia S4 sensor de infrarrojos de desarrollo de aplicaciones?
- ¿Puede una aplicación web móvil obtener información de identificación del dispositivo Android?
- Bootstrap de Twitter: no se cambia el tamaño de la barra de navegación en el cambio de orientación (solo con el navegador de acciones de Android)
- La barra de direcciones del navegador Mobile Webkit cambia $ (ventana) .height (); Haciendo el fondo-tamaño: la cubierta rescale cada vez
- Aplicación móvil nativa que utiliza el lenguaje de dardo google
- ¿Hay alguna manera de usar Webkit Inspector Remote Debugging en iPad?
- ¿Cuál es el objetivo de establecer el tamaño mínimo del montón en una aplicación para Android?
- ¿Cómo admitir la visualización de PDF para todos los navegadores móviles?
Las aplicaciones ordinarias de SDK no tienen derechos de acceso, y mucho menos de modificar, las cachés de otras aplicaciones, como tampoco tienen derecho a hackear sus archivos.
Esto puede ser posible en teléfonos con raíces con la aplicación ejecutándose como root, en cuyo caso tendrá que construir manualmente las rutas basadas en los nombres de los paquetes de las aplicaciones.
La respuesta dada aquí es falsa, hay aplicaciones del mercado que tienen un programación clara de la funcionalidad de caché de todas las aplicaciones. Además, lo siguiente está en la documentación:
public static final String CLEAR_APP_CACHE
Desde: API Nivel 1 en android Permite que una aplicación borre las cachés de todas las aplicaciones instaladas en el dispositivo. Valor constante:
android.permission.CLEAR_APP_CACHE
Tenga en cuenta la "parte de todas las aplicaciones instaladas", y el hecho de que no necesita ningún acceso root o permisos especiales más allá de un permiso de usuario estándar.
Puedo publicar aquí porque tengo un requisito en una entrega para borrar todos los cachés de la aplicación cada 24 horas en un teléfono de demostración de la tienda y estoy tratando de averiguar cómo usar esto correctamente. Sé que parte de la solución es obtener este permiso, también sé cómo encontrar todas las aplicaciones instaladas en el dispositivo, y estoy trabajando en ser capaz de eliminar realmente el caché. Mi problema es que otros cachés de aplicaciones no contengan archivos (a pesar de tener contenido), sospecho que no tengo acceso de lectura para hacer la lista de archivos llamada.
Debería tener este permiso en su manifiesto:
<uses-permission android:name="android.permission.CLEAR_APP_CACHE"/>
Después de eso, puede usar PackageManager para borrar el caché de todo el programa:
PackageManager pm = getPackageManager(); // Get all methods on the PackageManager Method[] methods = pm.getClass().getDeclaredMethods(); for (Method m : methods) { if (m.getName().equals("freeStorage")) { // Found the method I want to use try { long desiredFreeStorage = 8 * 1024 * 1024 * 1024; // Request for 8GB of free space m.invoke(pm, desiredFreeStorage , null); } catch (Exception e) { // Method invocation failed. Could be a permission problem } break; } }
Esto solicita que Android limpie los archivos de caché lo suficiente para que haya 8 GB libres. Si estableces este número lo suficientemente alto, debes lograr lo que quieres (que Android eliminará todos los archivos de la caché). Cuando llama a freeStorage () comprueba si la cantidad de almacenamiento (en este caso 8 GB) está disponible para los archivos de caché. Si no, empieza a eliminar archivos de los directorios de caché de la aplicación, eliminando primero los archivos más antiguos. Sigue eliminando archivos hasta que ya no haya más archivos que eliminar, o ha liberado la cantidad de almacenamiento que solicitó (en este caso 8 GB).