Hintergrund
Unter Android 4.4 (KitKat) hat Google den Zugriff auf die SD-Karte stark eingeschränkt.
Ab Android Lollipop (5.0) können Entwickler eine neue API verwenden, die den Benutzer auffordert, den Zugriff auf bestimmte Ordner zu bestätigen, wie in diesem Beitrag von Google-Groups beschrieben .
Das Problem
Der Beitrag weist Sie an, zwei Websites zu besuchen:
Dies sieht aus wie ein inneres Beispiel (das vielleicht später in den API-Demos gezeigt wird), aber es ist ziemlich schwer zu verstehen, was los ist.
Dies ist die offizielle Dokumentation der neuen API, enthält jedoch nicht genügend Details zur Verwendung.
Folgendes sagt es Ihnen:
Wenn Sie wirklich vollen Zugriff auf einen gesamten Teilbaum von Dokumenten benötigen, starten Sie zunächst ACTION_OPEN_DOCUMENT_TREE, damit der Benutzer ein Verzeichnis auswählen kann. Übergeben Sie dann die resultierenden getData () an fromTreeUri (Context, Uri), um mit dem vom Benutzer ausgewählten Baum zu arbeiten.
Wenn Sie im Baum der DocumentFile-Instanzen navigieren, können Sie immer getUri () verwenden, um den Uri abzurufen, der das zugrunde liegende Dokument für dieses Objekt darstellt, und um es mit openInputStream (Uri) usw. zu verwenden.
Um Ihren Code auf Geräten zu vereinfachen, auf denen KITKAT oder früher ausgeführt wird, können Sie fromFile (File) verwenden, das das Verhalten eines DocumentsProviders emuliert.
Die Fragen
Ich habe einige Fragen zur neuen API:
- Wie benutzt du es wirklich?
- Laut dem Beitrag wird sich das Betriebssystem daran erinnern, dass die App eine Berechtigung zum Zugriff auf die Dateien / Ordner erhalten hat. Wie überprüfen Sie, ob Sie auf die Dateien / Ordner zugreifen können? Gibt es eine Funktion, die mir die Liste der Dateien / Ordner zurückgibt, auf die ich zugreifen kann?
- Wie gehen Sie mit diesem Problem bei Kitkat um? Ist es ein Teil der Support-Bibliothek?
- Gibt es auf dem Betriebssystem einen Einstellungsbildschirm, auf dem angezeigt wird, welche Apps auf welche Dateien / Ordner zugreifen können?
- Was passiert, wenn eine App für mehrere Benutzer auf demselben Gerät installiert ist?
- Gibt es eine andere Dokumentation / ein anderes Tutorial zu dieser neuen API?
- Können die Berechtigungen widerrufen werden? Wenn ja, gibt es eine Absicht, die an die App gesendet wird?
- Würde das Anfordern der Berechtigung für einen ausgewählten Ordner rekursiv funktionieren?
- Würde die Verwendung der Berechtigung es dem Benutzer auch ermöglichen, nach Wahl des Benutzers eine Mehrfachauswahl zu treffen? Oder muss die App speziell angeben, welche Dateien / Ordner zugelassen werden sollen?
- Gibt es auf dem Emulator eine Möglichkeit, die neue API auszuprobieren? Ich meine, es hat eine SD-Kartenpartition, aber es funktioniert als primärer externer Speicher, sodass der gesamte Zugriff darauf bereits gewährt wird (mit einer einfachen Berechtigung).
- Was passiert, wenn der Benutzer die SD-Karte durch eine andere ersetzt?