2 votos

¿Es fiable guardar algunos archivos de la aplicación en /storage/emulated/0/?

Ya leí que /sdcard/ es un enlace simbólico al camino real de /storage/emulated/0/.

Soy un desarrollador de aplicaciones de Android que utiliza Apache Cordova, donde cordova.file.externalRootDirectory es de hecho file:///storage/emulated/0/.

¿Siempre es totalmente confiable guardar algunos archivos internos de la aplicación en /storage/emulated/0/path/to/app, considerando que el usuario podría no tener una tarjeta de memoria externa en su teléfono?

1 votos

En cuanto al título de la pregunta, la respuesta es "No": emulado no es físico pero lo que a veces se llama la "tarjeta SD interna". El físico generalmente aparece en /storage por su etiqueta, por ejemplo /storage/DF8C-A1B1. Además, emulado/0/ es lo que aparece en /sdcard si el propietario del dispositivo está "conectado". Si hay otras cuentas, su "tarjeta SD interna" aparece como emulado/1/ y así sucesivamente.

1 votos

@Izzy las tarjetas SD externas también se emulan utilizando FUSE/sdcardfs de la misma manera que /data/media. Además, /sdcard (/storage/emulated/0) puede apuntar a una tarjeta SD externa físicamente en al menos dos situaciones: 1) El usuario formateó la tarjeta SD como almacenamiento Adoptable y migró todos los datos a ella. 2) En un dispositivo con configuración de almacenamiento primario físico solo (que no es muy común).

1 votos

@IrfanLatif nunca había oído hablar de eso, ¡gracias por la indicación! Pero si lees la página detrás del enlace, no dice una palabra sobre "emulado" para este caso raro – pero dice para todos los demás: "El almacenamiento compartido principal (/sdcard) se emula en la parte superior del almacenamiento interno." Y eso no es la "tarjeta física" – especialmente no con el Nexus 6 siendo nombrado como ejemplo (excepto por el Nexus 1, ningún Nexus tiene una ranura para tarjetas SD). Puede que tengas un punto con el almacenamiento adoptable, aunque, el cual nunca he usado (¿por qué debería; eso es solo un último recurso de emergencia de todos modos).

4voto

Jack Wade Puntos 231

¿Es siempre completamente confiable guardar algunos archivos internos de la aplicación en /storage/emulated/0/ruta/a/la/aplicacion?

No. El almacenamiento externo compartido no es confiable, como se documenta en getExternalFilesDir() y otra documentación relacionada, debido a múltiples posibles razones:

  • El usuario u otra aplicación con acceso completo al almacenamiento puede leer, modificar o eliminar los archivos.
  • Los directorios privados de la aplicación en el almacenamiento externo se eliminan cuando se desinstala la aplicación.
  • El usuario puede estar usando una tarjeta SD externa físicamente como único almacenamiento externo compartido principal. Por lo tanto, los datos se pierden cuando se retira la tarjeta.

Es mejor utilizar el almacenamiento interno (getFilesDir() y similares) para la seguridad y confiabilidad de los datos. Para más detalles:

0 votos

Muchas gracias, pero cuando el usuario nunca tuvo una tarjeta externa físicamente en primer lugar, ¿todavía existe /storage/emulated/0/path/to/app?

1 votos

@JoãoPimentelFerreira sí, /storage/emulated/0 siempre existe. Es un sistema de archivos emulado, el directorio subyacente real es /data/media/0. Por favor, revisa mis respuestas a las preguntas vinculadas para obtener una explicación detallada sobre esto.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X