Adaptación de almacenamiento de Android 11 Edición Lite

Leí muchos artículos en Internet que se adaptan a Android 11 y siento que son demasiado complicados, por lo que enumero brevemente algunos cambios de almacenamiento en la versión de Android 11.

1. Como otras versiones, estos dos directorios son directorios privados de la aplicación y no se requiere permiso para leer y escribir.

/ datos / datos / paquete

/ sdcard / Android / data / paquete

 

2 . Lectura / Crear / Eliminar almacenamiento externo de multimedia catálogos, tales como imágenes, vídeo, audio, descargar archivos, documentos y así sucesivamente. Se recomienda solicitar dinámicamente el permiso READ_EXTERNAL_STORAGE (este es el permiso de lectura, si no lo aplica, los archivos de solo lectura incluyen los archivos creados por la propia aplicación , y puede crear / eliminar archivos multimedia sin solicitar ningún permiso) , y puede acceder a él a través de MediaStore.

 * Nota 1. No puede eliminar archivos creados por otras aplicaciones (el sistema registrará qué archivo es generado por su aplicación). Si desea eliminar archivos escritos por otras aplicaciones, un cuadro emergente le preguntará al usuario cada vez que elimine ellos.

                 2. Los archivos multimedia se colocan en un directorio privado y el sistema no puede escanearlos y no aparecerán en el álbum, es igual a la versión anterior del sistema.

                 3. El permiso READ_EXTERNAL_STORAGE solo puede acceder a archivos multimedia almacenados externamente y no se puede acceder a otros tipos de archivos.

                 4. Si desea obtener la información de la ubicación de la toma almacenada en la imagen, necesita ExifInterface para leerla.ACCESS_MEDIA_LOCATION权限,使用

 

3. Archivos de escritura / eliminación de almacenamiento externo  (todos los archivos en la tarjeta SD, incluidos los archivos multimedia, incluidos los directorios privados de otras aplicaciones), debe solicitar un nuevo permiso, el permiso de escritura se suprime en el nuevo sistema, debe ir manualmente a Abra en la configuración de la aplicación (esta vez no es una ventana emergente).

<usa-permiso android: name = "android.permission.MANAGE_EXTERNAL_STORAGE" />

Método abierto: // la versión debe juzgarse cuando se usa, porque el sistema de versión baja no tiene este permiso

val intent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
                intent.data = Uri.parse("package:" + context!!.packageName)
                startActivityForResult(intent, 3)

 

4. No es necesario leer o escribir permisos para seleccionar un archivo a través del selector de archivos. Se guía al usuario para que seleccione el archivo y la aplicación acepta el método de devolución de llamada. El selector de archivos debe ser el marco SAF que viene con Android. sistema , no el tipo de código abierto o selector personalizado!

El selector de archivos no solo puede leer archivos, sino también crear archivos. Estas operaciones requieren la cooperación del usuario para completarse, ¡no en silencio! (Entonces, tal vez la experiencia del usuario no sea buena, la ventaja es que no se requiere permiso)

 

5. Actualización de la aplicación y migración de la versión 

Aplicación que se instaló en la versión 11 (instalada antes de la 11 y la versión del sistema se actualizó). El destino de la versión anterior de la aplicación es inferior a 30. Después de la actualización, es 30. Agregue la marca preserveLegacyExternalStorage. La aplicación también puede leer y escribir en forma de almacenamiento heredado.

Si es una aplicación recién instalada en la versión 11 , incluso si hay preserveLegacyExternalStorage, ¡no funcionará!

 

Este artículo presenta una descripción general del almacenamiento. Para operaciones de código específicas, consulte el siguiente blog:

https://developer.android.google.cn/training/data-storage/shared/media#java

https://www.jianshu.com/p/4d74b719309f

https://www.jianshu.com/p/e94cea26e213

 

Supongo que te gusta

Origin blog.csdn.net/gue8848/article/details/115277730
Recomendado
Clasificación