Android – Conservar o borrar los archivos creados por la aplicación en desinstalar

He creado una aplicación que crea y almacena los archivos a la sdcard. Es allí una manera de enlazar la carpeta de la aplicación con el fin de eliminar todos los archivos cuando el usuario ejecuta desinstalar en el dispositivo android?

InformationsquelleAutor Niko Gamulin | 2009-08-03

6 Kommentare

  1. 12

    Hay ninguna manera de que su aplicación para saber que se va a desinstalar (sin modificar el kernel). Todos los archivos creados en el data/data/your.app.package se elimina de forma automática tras la desinstalación de la aplicación.

    No creo que nada se borra de la sdcard. Usted puede hacer una prueba rápida y averiguar.

    Otro enfoque podría ser tener otra aplicación que comprueba si esta aplicación está instalada o no. Si no, se puede hacer el trabajo de limpieza.

  2. 23

    Parece que ha habido algunos avances desde el año 2009 :).

    De la documentación:

    Si usted está utilizando la API de Nivel 8 o
    mayor, uso getExternalCacheDir() a
    abrir un Archivo que representa el
    de almacenamiento externo directorio donde se
    debe guardar los archivos de caché. Si el usuario
    desinstala la aplicación, estas
    los archivos serán borrados de forma automática.
    Sin embargo, durante la vida de su
    la aplicación, debe gestionar estos
    los archivos de caché y eliminar a los que
    no son necesarios con el fin de preservar
    espacio de archivo.

    Si usted está utilizando la API de Nivel 7 o inferior,
    uso getExternalStorageDirectory() a
    abrir un Archivo que representa la raíz
    el almacenamiento externo, a continuación, escribir
    la caché de datos en la siguiente
    directorio:

    /Android/data/cache/
    El es tu Java-estilo
    nombre del paquete, tales como
    «com.ejemplo.android.la aplicación».

  3. 4

    Incluso cuando se utiliza el getExternalCacheDir(), he visto que el directorio de memoria caché, que es el paquete de la aplicación nombre, no se quita automáticamente como se dice en el Android Documentación, al menos no en la Lenovo A1. Podría ser un poco ingenuo, pero es posible que desee limpiar los datos anteriores durante la re-instalar. Allí, usted puede averiguar si su aplicación fue de la onu-instalado o se ha instalado por primera vez – se almacena un valor, tal vez un booleano, el uso compartido de las preferencias. Puede ser algo como:

    SharedPreferences sharedPrefs = getSharedPreferences(INSTALL_PREFS, MODE_PRIVATE);
    if(sharedPrefs.getBoolean("AppInstalled", false) == false){
        //DELETE APP DIRECTORY
        SharedPreferences.Editor editor = sharedPrefs.edit();
        editor.putBoolean("AppInstalled", true);
        editor.commit();
    }

    De esta manera, cada vez que se ejecuta la aplicación, comprueba si es la primera vez que se ejecuta. Cuando la aplicación se elimina, por lo que será compartido preferencias de la aplicación. Entonces, la próxima vez instalado, el si(…) va a ser verdad y puede hacer algunas limpiar allí.

    Sé que esto no responde a la pregunta directamente y no es bueno dejar de datos no utilizados en los dispositivos de los usuarios, pero creo que podría ser una alternativa para tratar de limpiar cuando una aplicación está siendo eliminado, lo que es razonable, pero parece imposible.

    • No sé si me missunderstood, pero parece que va a funcionar como se esperaba si lo uso desde la primera publicación de la aplicación, ¿estás de acuerdo?
  4. 4

    Voy a agregar esto porque las respuestas existentes son obsoletas en el 2017.
    Si bien es cierto que no hay devolución de llamada en la aplicación de desinstalación, algunos mecanismos que se han proporcionado para la preservación de los datos de la aplicación más allá de desinstalar.

    • Desde Android 6.0 (API 23), el Copia de seguridad Automática para
      Apps

      característica fue introducida, que permitió a los desarrolladores para permitir o impedir la aplicación automática de copia de seguridad. A partir de la API 23 de copia de seguridad está activado por defecto.

    • Dos nuevos application etiquetas se han introducido para el archivo de manifiesto: android:allowBackup y android:fullBackupContent.

    Excluirse de la copia de seguridad automática, añadir android:allowBackup="false" para el archivo de manifiesto en virtud de la application etiqueta. Un valor de «true» guardará automáticamente compartido preferencias y bases de datos a la nube, así como otros archivos.

    En segundo lugar, puede ser muy específico acerca de los archivos que desea incluyen o excluir para su eliminación o conservación en desinstalar con el android:fullBackupContent etiqueta. Este atributo apunta a un archivo XML que contiene reglas de copia de seguridad. Crear un archivo de configuración XML en el res/xml/ directorio con la siguiente sintaxis:

    <full-backup-content>
        <include domain=["file" | "database" | "sharedpref" | "external" | "root"]
        path="string" />
        <exclude domain=["file" | "database" | "sharedpref" | "external" | "root"]
        path="string" />
    </full-backup-content>

    Aquí usted puede agregar los tipos de archivo específicos para incluir o excluir y sus rutas de acceso. Agregar el android:fullBackupContent = "@xml/my_backup_rules" etiqueta en el archivo de manifiesto en virtud de la application etiqueta.

    Los archivos especificados sería la copia de seguridad de Google Drive en virtud de la cuenta principal de correo electrónico del dispositivo. Los datos serán restaurados en la re-instalar proporcionado la siguiente configuración está habilitada por el usuario:

    Settings -> Backup & Reset -> Automatic Restore.

    También se debe señalar que los datos de copia de seguridad no puede ser leído por el usuario o de otras aplicaciones en el dispositivo.

    Android - Conservar o borrar los archivos creados por la aplicación en desinstalar

    El mismo también se puede acceder desde la aplicación de Google Drive desde aquí:

    Google Drive -> Settings -> Auto backup for apps -> Backup and reset

    Android - Conservar o borrar los archivos creados por la aplicación en desinstalar

    Vale la pena señalar que si el mismo primaria cuenta de Google se utiliza para múltiples dispositivos, luego de varios dispositivos se crean copias de seguridad. Las copias de seguridad de los dispositivos individuales se pueden acceder desde aquí:

    Google Drive -> Settings -> Backups

    Android - Conservar o borrar los archivos creados por la aplicación en desinstalar

    • Gran respuesta. Estaba buscando exactamente para esto. En el año 2017 (o desde Android 6.0) esta es la respuesta correcta.
    • la respuesta perfecta 😀
    • ¿Cómo funciona whatsapp copia de seguridad de trabajo? han de copia de seguridad independiente de teléfono de copia de seguridad? alguna idea?
    • WhatsApp también se utiliza la Unidad para la Restauración Automática en varios dispositivos.
  5. 3

    parece que desde entonces hay una buena soltuion, Contexto.getExternalFilesDir():

    Devuelve la ruta absoluta al directorio en el sistema de ficheros externos
    (que está en algún lugar sobre el medio Ambiente.getExternalStorageDirectory ()), donde
    la aplicación puede colocar persistente archivos que posee. Estos archivos son
    privado a las aplicaciones, y que normalmente no son visibles para el usuario como
    los medios de comunicación.

    Esto es como getFilesDir() en que estos archivos serán eliminados cuando
    la aplicación se desinstala

  6. 0

    si desea almacenar datos de gran tamaño, a continuación, guárdelo en almacenamiento externo con la ruta y nombre de archivo, tales como

    Environment.getExternalStorageDirectory().toString()+"/Android/data/packageName"

    donde el nombre del paquete es el paquete de la aplicación nombre por ejemplo com.pensar.abc

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea