Android – ¿Dónde almacenar contenido descargado, almacenamiento interno o externo?

Una serie de preguntas separadas, pero relacionadas, sobre dónde almacenar contenido descargado dentro de mi aplicación.

Tengo una aplicación que descarga contenido de un servidor central. Este contenido es a veces contenido premium, o al menos un contenido en el que el editor no quiere que se distribuya libremente. Entiendo que el almacenamiento "externo" es fácilmente accesible mientras que el almacenamiento "interno" está protegido, a menos que el teléfono esté enraizado.

Si la aplicación está instalada en el SDCARD (como el mío está configurado para ser) entonces es el almacenamiento "interno" también físicamente en el SDCARD? Por lo tanto, si mi aplicación SDCARD instalada descarga, por ejemplo, 100 MB de contenido en el almacenamiento interno, ¿de hecho termina en el SDCARD o termina en el almacenamiento físico del dispositivo?

Si la aplicación está instalada en el SDCARD y el almacenamiento "interno" con el contenido descargado se encuentra en el SDCARD, ¿se almacena físicamente en un formato abierto o se cifra? Parece que recuerdo haber leído que una aplicación almacenada en un SDCARD está encriptada. ¿Esto también se aplica al almacenamiento "interno"?

(La pregunta eliminada acerca del almacenamiento de archivos en un único directorio como Context.getDir () implica que se puede crear y mantener un sistema de directorio en el almacenamiento interno)

¿Hay un mejor enfoque?

Hizo un montón de experimentación y llegó a las siguientes conclusiones con Android 2.2 en un Motorola Droid 2:

  • Cuando una aplicación se instala / se mueve a la SDCARD, entonces se almacena como un archivo .asec en el directorio oculto /.android_secure en el SDCARD. Se trata de un archivo cifrado y comprimido.
  • Cuando la aplicación crea archivos de datos en el "almacenamiento interno" se almacenan en la memoria interna del dispositivo, no en el SDCARD.
  • El cuadro de diálogo Configuración / Administrar aplicaciones de la aplicación tiene un valor para "Datos": es la cantidad de datos que la aplicación está utilizando dentro de su almacenamiento interno, es decir, en la memoria interna que no está en el SDCARD
  • El almacenamiento externo termina en el SDACRD en el directorio / Android / data
  • El borrado de los datos del cuadro de diálogo Detalles de configuración / gestión de aplicaciones limpia todo, lo que significa que la aplicación instalada necesita tener suficiente conocimiento / lógica para manejar la situación de "no datos".

Mi aplicación es una aplicación para descargar contenido. Lo que todo esto significa para mí es que:

  • Hay poco valor real en el almacenamiento de mi pequeña aplicación en el SDCARD dado que la mayor parte del almacenamiento que se consumen en el teléfono estará en la memoria interna del dispositivo. Excepto por supuesto que siempre es bueno permitir que la aplicación se instale en el SDCARD.
  • El paquete de instalación debe ser capaz de recuperar el contenido descargado del usuario si es borrado por el usuario.
  • El concepto de almacenar un identificador de instalación único en la memoria interna funciona bien hasta que un usuario elimina los datos de la aplicación y, por lo tanto, hace que se calcule un nuevo id de instalación. Así, para poder recordar qué contenido se ha descargado en un dispositivo, se requiere una cuenta de usuario en un servidor central que el usuario crea / inicia sesión cada vez que la aplicación se inicia desde cero.
  • Cómo obtener el directorio predeterminado de la foto hecha por la cámara en android?
  • ¿Cómo manejar las reglas de Kitkat y las restricciones de la tarjeta SD?
  • Escritura y lectura de archivos desde la tarjeta SD en Android
  • Cómo comprobar si existe un archivo en un directorio en la tarjeta sd
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.