Almacenamiento de datos en / externalsdcard / Android / datos / <app package name> en KITKAT

He leído mucho acerca de KITKAT y la prevención de la escritura a la secundaria externa sdcard. Parece ser una nueva política de google. También leí sobre cómo almacenar los datos de la aplicación en / externalsdcard / Android / data /.

Ahora mi pregunta, porque no puedo reproducir o probar: Si la aplicación no está autorizada a escribir datos directamente bajo <secundary external sdcard>, ¿Entonces será posible almacenar los datos de la aplicación en <secundary external sdcard> / Android / data / <Nombre del paquete de aplicación>?

Si es posible. ¿Podría alguien compartir un código de ejemplo?

  • Nunca asuma que el almacenamiento secundario extraíble es más grande que el interno primario. En la mayoría de los dispositivos modernos de almacenamiento interno puede ser de hasta 64 GB, pero la tarjeta SD puede ser tan pequeño como 1 MB de gran tamaño (si el usuario insertó la tarjeta pequeña y vieja).

  • No hay manera de distinguir cuál es "externo" usando las API actuales.

Así que la manera correcta es usar Context.getExternalFilesDirs () que devuelve todos los almacenes externos a los que se pueden almacenar archivos específicos de la aplicación sin ningún permiso.

Utilice StatFs para encontrar el almacenamiento más grande disponible y escriba datos en él.

final File[] dirs = context.getExternalFilesDirs(null); //null means default type //find a dir that has most of the space and save using StatFs 

Como dice la documentación,

Devuelve rutas absolutas a los directorios específicos de la aplicación en todos los dispositivos de almacenamiento externos donde la aplicación puede colocar los archivos persistentes que posee. Estos archivos son internos a la aplicación y normalmente no son visibles para el usuario como medios.

Esto es como getFilesDir () en que estos archivos se eliminarán cuando la aplicación se desinstale, sin embargo, hay algunas diferencias importantes:

Los archivos externos no siempre están disponibles: desaparecerán si el usuario monta el almacenamiento externo en una computadora o lo elimina. No hay seguridad reforzada con estos archivos.

Los dispositivos de almacenamiento externos que se devuelven aquí se consideran una parte permanente del dispositivo, incluyendo tanto el almacenamiento externo emulado como las ranuras de los medios físicos, como las tarjetas SD en el compartimento de la batería. Las rutas devueltas no incluyen dispositivos transitorios, como unidades flash USB.

Una aplicación puede almacenar datos en cualquiera o todos los dispositivos devueltos. Por ejemplo, una aplicación puede optar por almacenar archivos grandes en el dispositivo con el espacio más disponible, según lo miden StatFs.

No se requieren permisos para leer o escribir en las rutas devueltas; Siempre son accesibles para la aplicación que llama. El acceso de escritura fuera de estas rutas en dispositivos de almacenamiento externos secundarios no está disponible.

La primera ruta devuelta es la misma que getExternalFilesDir (String). Las rutas devueltas pueden ser nulas si un dispositivo de almacenamiento no está disponible.

  • Android "no se pudo registrar en el registro de eventos binario: desbordamiento"
  • Ejecutar el comando shell desde android
  • Problemas con android-ffmpeg en Android Lollipop
  • Error de licencia con el emulador de Android 4.4
  • MediaPlayer: Debe tener un controlador de subtítulos ya establecido: KitKat
  • Problema de renderizado de WebView en Android KitKat
  • Desconexión del dispositivo BLE con el dispositivo Android automáticamente. Android BLE
  • Establecer el modo de pantalla completa inmersiva de Android en el manifiesto
  • Configuración del emulador de kitkat para Android 4.4
  • No se puede crear una carpeta 'res / transition' después de actualizar SDK a Kitkat 4.4.2
  • El constructor de vista personalizada en Android 4.4 se bloquea en Kotlin, ¿cómo arreglarlo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.