Die meisten Apps, die Zugriff auf gemeinsamen Speicher benötigen, Praktiken zum Teilen von Medien und die Freigabe von Non-Media-Dateien Dateien. Einige Apps haben jedoch einen Hauptnutzungsfall, der einen umfassenden Zugriff auf Dateien auf einem Gerät erfordert, aber nicht effizient mit den datenschutzfreundlichen Best Practices für den Speicher erfolgen kann. Android bietet für diese Situationen einen speziellen App-Zugriff namens Zugriff auf alle Dateien.
Der Hauptanwendungsfall einer Antiviren-App erfordert beispielsweise das regelmäßige Scannen vieler Dateien in verschiedenen Verzeichnissen. Wenn für dieses Scannen wiederholte Nutzerinteraktionen erforderlich sind, um Verzeichnisse über die Systemdateiauswahl auszuwählen, ist das für Nutzer nicht sehr praktisch. Bei anderen Anwendungsfällen wie Dateimanager-Apps, Sicherungs- und Wiederherstellungs-Apps sowie Apps zur Dokumentverwaltung müssen ähnliche Überlegungen angestellt werden.
Zugriff auf alle Dateien anfordern
So kann eine App vom Nutzer den Zugriff auf alle Dateien anfordern:
- Deklarieren Sie die
MANAGE_EXTERNAL_STORAGE
Berechtigung im Manifest. - Verwenden Sie die Intent-Aktion
ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION
, um Nutzer zu einer Seite mit Systemeinstellungen weiterzuleiten, auf der sie die folgende Option für Ihre App aktivieren können: Zugriff zum Verwalten aller Dateien zulassen.
Wenn Sie wissen möchten, ob Ihrer App die MANAGE_EXTERNAL_STORAGE
-Berechtigung erteilt wurde, rufen Sie Environment.isExternalStorageManager()
auf.
Von MANAGE_EXTERNAL_STORAGE zugelassene Vorgänge
Die Berechtigung MANAGE_EXTERNAL_STORAGE
gewährt Folgendes:
Lese- und Schreibzugriff auf alle Dateien im Ordner freigegeben Speicherplatz.
Zugriff auf den Inhalt der Tabelle
MediaStore.Files
Zugriff auf das Stammverzeichnis sowohl des USB On-The-Go-Speichers (OTG) als auch der SD-Karte
Schreibzugriff auf alle internen Speicherverzeichnisse mit Ausnahme von
/Android/data/
,/sdcard/Android
und den meisten Unterverzeichnissen von/sdcard/Android
. Dieser Schreibzugriff umfasst den Zugriff auf den direkten Dateipfad.Apps, denen diese Berechtigung gewährt wurde, können immer noch nicht auf die app-spezifischen Verzeichnisse, die zu anderen Apps gehören, da diese Verzeichnisse als Unterverzeichnisse von
Android/data/
auf einem Speicher-Volume.
Mit der Berechtigung „MANAGE_EXTERNAL_STORAGE
“ kann eine App auf diese zugreifen
Dateien und Verzeichnisse hinzufügen, indem Sie entweder die
MediaStore
API oder direkte Datei
Pfade. Wenn Sie die
Storage Access Framework
Sie können jedoch nur dann auf eine Datei oder ein Verzeichnis zugreifen, wenn Sie dies ohne
mit der Berechtigung MANAGE_EXTERNAL_STORAGE
.
Speicherverwaltungsaktivität einer anderen App aufrufen
Unter Android 12 (API-Level 31) und höher können Apps, die sowohl die Berechtigung MANAGE_EXTERNAL_STORAGE
als auch die Berechtigung QUERY_ALL_PACKAGES
haben, z. B. Dateiverwaltungs-Apps, Nutzer über getManageSpaceActivityIntent()
zur Aktivität zur benutzerdefinierten Speicherverwaltung einer anderen App weiterleiten.
Die Methode getManageSpaceActivityIntent()
nimmt einen Paketnamen und einen Anfragecode entgegen und gibt einen der folgenden Werte zurück:
- Ein
PendingIntent
, wenn die App mit dem Durch den angegebenen Paketnamen wurde ein benutzerdefinierter „Speicherplatz verwalten“ festgelegt Aktivitäten. Die Dateiverwaltungs-App, die diegetManageSpaceActivityIntent()
-Methode aufgerufen hat, kann dann den zurückgegebenen Intent aufrufen, um Nutzer zur benutzerdefinierten Aktivität weiterzuleiten. null
, wenn die App mit dem angegebenen Paketnamen keine Aktivität vom Typ „Gruppenbereich verwalten“ definiert.
MANAGE_EXTERNAL_STORAGE für Tests aktivieren
Wenn Sie herausfinden möchten, wie sich die Berechtigung MANAGE_EXTERNAL_STORAGE
auf Ihre App auswirkt, können Sie sie zum Testen aktivieren. Führen Sie dazu den folgenden Befehl auf dem Computer aus, der mit Ihrem Testgerät verbunden ist:
adb shell appops set --uidPACKAGE_NAME MANAGE_EXTERNAL_STORAGE allow
Google Play-Hinweis
Dieser Abschnitt enthält eine Mitteilung für Entwickler, die Apps bei Google Play veröffentlichen.
Um den umfassenden Zugriff auf den gemeinsam genutzten Speicher zu beschränken, hat der Google Play Store seine
Richtlinie
Apps bewerten, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind, und
Zugriff auf alle Dateien über die Berechtigung MANAGE_EXTERNAL_STORAGE
Diese Richtlinie gilt seit Mai 2021.
Wenn Ihre App auf Android 11 oder höher ausgerichtet ist und die Berechtigung MANAGE_EXTERNAL_STORAGE
deklariert, zeigt Android Studio die in Abbildung 1 dargestellte Lint-Warnung an. Diese Warnung erinnert Sie daran, dass im Google Play Store eine Richtlinie gilt, die die Verwendung der Berechtigung einschränkt.
MANAGE_EXTERNAL_STORAGE
Berechtigung.
Fordern Sie die Berechtigung MANAGE_EXTERNAL_STORAGE
nur an, wenn sich bei Ihrer App die datenschutzfreundlicheren APIs wie das Storage Access Framework oder die Media Store API nicht umsetzen lassen. Nutzung Ihrer App
der Genehmigung müssen unter die zulässigen Verwendungszwecke fallen und direkt mit
die Hauptfunktion der App. Wenn Ihre App einen Anwendungsfall enthält
wie die folgenden aussehen, kann das System
Berechtigung MANAGE_EXTERNAL_STORAGE
:
- Dateiverwaltung
- Apps zum Sichern und Wiederherstellen
- Antiviren-Apps
- Apps zur Dokumentverwaltung
- Dateisuche auf dem Gerät
- Laufwerks- und Dateiverschlüsselung
- Datenmigration von Gerät zu Gerät