Contexte
Sur Android 4.4 (KitKat), Google a rendu l'accès à la carte SD assez restreint.
À partir d'Android Lollipop (5.0), les développeurs peuvent utiliser une nouvelle API qui demande à l'utilisateur de confirmer pour autoriser l'accès à des dossiers spécifiques, comme indiqué dans cet article Google-Groupes .
Le problème
Le message vous invite à visiter deux sites Web:
Cela ressemble à un exemple interne (peut-être à montrer dans les démos de l'API plus tard), mais il est assez difficile de comprendre ce qui se passe.
Ceci est la documentation officielle de la nouvelle API, mais elle ne donne pas suffisamment de détails sur la façon de l'utiliser.
Voici ce qu'il vous dit:
Si vous avez vraiment besoin d'un accès complet à un sous-arbre entier de documents, commencez par lancer ACTION_OPEN_DOCUMENT_TREE pour permettre à l'utilisateur de choisir un répertoire. Passez ensuite le getData () résultant dans fromTreeUri (Context, Uri) pour commencer à travailler avec l'arborescence sélectionnée par l'utilisateur.
Lorsque vous naviguez dans l'arborescence des instances de DocumentFile, vous pouvez toujours utiliser getUri () pour obtenir l'URI représentant le document sous-jacent pour cet objet, à utiliser avec openInputStream (Uri), etc.
Pour simplifier votre code sur les appareils exécutant KITKAT ou une version antérieure, vous pouvez utiliser fromFile (File) qui émule le comportement d'un DocumentsProvider.
Questions
J'ai quelques questions sur la nouvelle API:
- Comment l'utilisez-vous vraiment?
- Selon le message, le système d'exploitation se souviendra que l'application a reçu l'autorisation d'accéder aux fichiers / dossiers. Comment vérifier si vous pouvez accéder aux fichiers / dossiers? Existe-t-il une fonction qui me renvoie la liste des fichiers / dossiers auxquels je peux accéder?
- Comment gérez-vous ce problème sur Kitkat? Fait-il partie de la bibliothèque de support?
- Existe-t-il un écran de paramètres sur le système d'exploitation qui montre quelles applications ont accès à quels fichiers / dossiers?
- Que se passe-t-il si une application est installée pour plusieurs utilisateurs sur le même appareil?
- Existe-t-il une autre documentation / tutoriel sur cette nouvelle API?
- Les autorisations peuvent-elles être révoquées? Si tel est le cas, une intention est-elle envoyée à l'application?
- La demande d'autorisation fonctionnerait-elle de manière récursive sur un dossier sélectionné?
- L'utilisation de l'autorisation permettrait-elle également de donner à l'utilisateur une chance de sélection multiple au choix de l'utilisateur? Ou l'application doit-elle indiquer spécifiquement à l'intention quels fichiers / dossiers autoriser?
- Existe-t-il un moyen sur l'émulateur d'essayer la nouvelle API? Je veux dire, il a une partition de carte SD, mais cela fonctionne comme le stockage externe principal, donc tout accès à celui-ci est déjà donné (en utilisant une simple autorisation).
- Que se passe-t-il lorsque l'utilisateur remplace la carte SD par une autre?