¿Cómo utilizar la nueva API de acceso a la tarjeta SD presentada para Android 5.0 (Lollipop)?

Antecedentes

EnAndroid 4.4 (KitKat), Google ha restringido el acceso a la tarjeta SD.

A partir de Android Lollipop (5.0), los desarrolladores pueden usar una nueva API que le pide al usuario que confirme si permite el acceso a carpetas específicas, tal como está escrito en elesta publicación de Grupos de Google .

El problema

La publicación te dirige a visitar dos sitios web:

https://android.googlesource.com/platform/development/+/android-5.0.0_r2/samples/Vault/src/com/example/android/vault/VaultProvider.java#258

Esto parece un ejemplo interno (tal vez se muestre en las demostraciones de API más adelante), pero es bastante difícil entender lo que está sucediendo.

http://developer.android.com/reference/android/support/v4/provider/DocumentFile.html

Esta es la documentación oficial de la nueva API, pero no proporciona suficientes detalles sobre cómo usarla.

Esto es lo que te dice:

Si realmente necesita acceso completo a un subárbol completo de documentos, comience iniciando ACTION_OPEN_DOCUMENT_TREE para permitir que el usuario elija un directorio. Luego pase el getData () resultante desde fromTreeUri (Context, Uri) para comenzar a trabajar con el árbol seleccionado por el usuario.

A medida que navega por el árbol de instancias de DocumentFile, siempre puede usar getUri () para obtener el Uri que representa el documento subyacente para ese objeto, para usar con openInputStream (Uri), etc.

Para simplificar su código en dispositivos que ejecutan KITKAT o versiones anteriores, puede usar fromFile (File) que emula el comportamiento de un proveedor de documentos.

Las preguntas

Tengo algunas preguntas sobre la nueva API:

¿Cómo lo usas realmente?Según la publicación, el sistema operativo recordará que la aplicación recibió un permiso para acceder a los archivos / carpetas. ¿Cómo verifica si puede acceder a los archivos / carpetas? ¿Hay alguna función que me devuelva la lista de archivos / carpetas a las que puedo acceder?¿Cómo manejas este problema en Kitkat? ¿Es parte de la biblioteca de soporte?¿Hay una pantalla de configuración en el sistema operativo que muestra qué aplicaciones tienen acceso a qué archivos / carpetas?¿Qué sucede si se instala una aplicación para varios usuarios en el mismo dispositivo?¿Hay alguna otra documentación / tutorial sobre esta nueva API?¿Se pueden revocar los permisos? Si es así, ¿hay alguna intención que se envíe a la aplicación?¿Solicitar el permiso funcionaría recursivamente en una carpeta seleccionada?¿Usar el permiso también permitiría darle al usuario la posibilidad de una selección múltiple por elección del usuario? ¿O la aplicación necesita decirle específicamente a la intención qué archivos / carpetas permitir?¿Hay alguna forma en el emulador para probar la nueva API? Quiero decir, tiene una partición de tarjeta SD, pero funciona como el almacenamiento externo principal, por lo que todo el acceso a él ya está dado (usando un permiso simple).¿Qué sucede cuando el usuario reemplaza la tarjeta SD con otra?

Respuestas a la pregunta(3)

Su respuesta a la pregunta