Como usar a nova API de acesso ao cartão SD apresentada para o Android 5.0 (Lollipop)?

fundo

EmAndroid 4.4 (KitKat), o Google tornou o acesso ao cartão SD bastante restrito.

No Android Lollipop (5.0), os desenvolvedores podem usar uma nova API que solicita ao usuário que confirme para permitir o acesso a pastas específicas, conforme escrito noesta postagem dos Grupos do Google .

O problema

A postagem direciona você a visitar dois sites:

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

Isso parece um exemplo interno (talvez seja mostrado nas demos da API posteriormente), mas é muito difícil entender o que está acontecendo.

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

Esta é a documentação oficial da nova API, mas não fornece detalhes suficientes sobre como usá-la.

Aqui está o que ele diz:

Se você realmente precisa de acesso total a uma subárvore inteira de documentos, inicie ACTION_OPEN_DOCUMENT_TREE para permitir que o usuário escolha um diretório. Em seguida, passe o getData () resultante para fromTreeUri (Context, Uri) para começar a trabalhar com a árvore selecionada pelo usuário.

Ao navegar na árvore das instâncias do DocumentFile, você sempre pode usar getUri () para obter o Uri que representa o documento subjacente para esse objeto, para uso com openInputStream (Uri), etc.

Para simplificar seu código em dispositivos executando o KITKAT ou anterior, você pode usar fromFile (File) que emula o comportamento de um DocumentsProvider.

As questões

Tenho algumas perguntas sobre a nova API:

Como você realmente usa?De acordo com a publicação, o sistema operacional lembrará que o aplicativo recebeu permissão para acessar os arquivos / pastas. Como você verifica se consegue acessar os arquivos / pastas? Existe uma função que me retorna a lista de arquivos / pastas que eu posso acessar?Como você lida com esse problema no Kitkat? Faz parte da biblioteca de suporte?Existe uma tela de configurações no sistema operacional que mostra quais aplicativos têm acesso a quais arquivos / pastas?O que acontece se um aplicativo estiver instalado para vários usuários no mesmo dispositivo?Existe alguma outra documentação / tutorial sobre esta nova API?As permissões podem ser revogadas? Em caso afirmativo, existe uma intenção que está sendo enviada para o aplicativo?Pedir a permissão funcionaria recursivamente em uma pasta selecionada?O uso da permissão também permitiria ao usuário a chance de seleção múltipla por opção do usuário? Ou o aplicativo precisa informar especificamente a intenção de quais arquivos / pastas permitir?Existe uma maneira no emulador de experimentar a nova API? Quero dizer, ele possui uma partição de cartão SD, mas funciona como o armazenamento externo principal, portanto todo o acesso a ele já é concedido (usando uma permissão simples).O que acontece quando o usuário substitui o cartão SD por outro?

questionAnswers(3)

yourAnswerToTheQuestion