El acceso de escritura a nivel de sistema de archivos a la tarjeta SD externa físicamente sin rootear el teléfono es no es posible desde los días previos al KK. Sin embargo, las aplicaciones siempre pueden (con o sin permiso del Almacenamiento) leer y escribir en su directorios privados en los almacenamientos compartidos. Así que puedes mover archivos a /storage/extSdCard/Android/data/
.
En Android 6+ la tarjeta SD externa es visible en /storage/[UUID]
donde UUID es el del sistema de archivos. Esta ruta del sistema de archivos sólo está disponible para la lectura (para las aplicaciones con READ|WRITE_EXTERNAL_STORAGE
permiso concedido) y de travesía (para todas las aplicaciones). El último caso es dejar que las aplicaciones lean/escriban en sus directorios privados. Al igual que el sistema de archivos interno emulado, el control de permisos se implementa a través del espacio de nombres de montaje y everybody (9997)
GID. La tarjeta SD se monta con tres VER de diferentes permisos:
vold
crea un espacio de nombres de montaje aislado para cada aplicación y dependiendo del estado del permiso de almacenamiento de la aplicación, bind-mounts a VER a /storage/[UUID]
. Para más detalles, véase ¿Qué es /storage/emulated/0/? y ¿Qué es el UID "u#_everybody"?
Dado que ninguno de los tres VER tiene permiso de escritura Las aplicaciones no tienen acceso de escritura a nivel de sistema de archivos a los directorios públicos de las tarjetas SD externas. Sin embargo, las aplicaciones - como la mayoría de los exploradores de archivos - que hacen uso de Storage Access Framework ( SAF ) (o Acceso al directorio con alcance en Android 7+ o Acceso al almacenamiento externo con alcance en Android 10+) son capaces de crear y eliminar archivos en toda la tarjeta SD.
El USB OTG se trata de forma casi similar, pero con una característica destacada diferencia :
"MOUNT_FLAG_VISIBLE" significa que el volumen es visible para las aplicaciones de terceros para el acceso directo al sistema de archivos.
...
volúmenes transitorios como los dispositivos USB OTG no debe ser marcados como visibles; su contenido debe ser mostrado a las aplicaciones a través de la Estructura de Acceso al Almacenamiento".
Así que los USBs no están expuestos como VER , en lugar de aplicaciones ver /storage/[UUID]
(que no es real) del sistema de archivos a través de SAF tanto para la lectura como para la escritura. Por eso el contenido de los medios extraíbles no está disponible a través de MediaStore también. Tampoco está disponible para las aplicaciones a través de APIs :
"Las rutas devueltas no incluyen los dispositivos transitorios, como las memorias USB conectadas a dispositivos portátiles".
Múltiples dispositivos de almacenamiento externo :
"Los dispositivos de almacenamiento externo que aparecen a través de estas API deben ser una parte semipermanente del dispositivo (como una ranura para tarjetas SD en el compartimento de la batería). Los desarrolladores esperan que los datos almacenados en estas ubicaciones estén disponibles durante largos periodos de tiempo. Por este motivo, los dispositivos de almacenamiento transitorios (como las unidades de almacenamiento masivo USB) no deben aparecer a través de estas API".
Sin embargo, El almacenamiento adoptable es siempre visible para las aplicaciones , ya sea tarjeta SD o USB.
RELACIONADO: