Alle Dateien auf einem Speichergerät verwalten

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 einen zentralen Anwendungsfall, der umfassenden Zugriff auf Dateien auf einem Gerät erfordert, aber nicht effizient mit den Best Practices für die datenschutzfreundliche Speicherung auf sie zugreifen können. Android bietet für diese Nutzer eine spezielle App mit dem Namen Zugriff auf alle Dateien. Situationen.

Der primäre Anwendungsfall einer Antiviren-App könnte beispielsweise regelmäßige Scans erfordern. für viele Dateien in verschiedenen Verzeichnissen. Wenn für diesen Scanvorgang ein wiederholter Scan erforderlich ist mit der Systemdateiauswahl Verzeichnisse auswählen, schlechte User Experience bietet. Andere Anwendungsfälle, z. B. Dateimanager-Apps, Sicherungs- und Wiederherstellungs-Apps sowie Apps zur Dokumentverwaltung – erfordern ähnliche zu berücksichtigen.

Zugriff auf alle Dateien anfordern

So kann eine App vom Nutzer den Zugriff auf alle Dateien anfordern:

  1. Deklarieren Sie die MANAGE_EXTERNAL_STORAGE Berechtigung im Manifest.
  2. Verwenden Sie die Methode ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION Intent-Aktion, um Nutzer auf eine Seite mit Systemeinstellungen weiterzuleiten, auf der sie die Funktion aktivieren können die Option Zugriff zum Verwalten aller Dateien zulassen aus.

So kannst du feststellen, ob deiner App die MANAGE_EXTERNAL_STORAGE gewährt wurde Berechtigung, Anruf Environment.isExternalStorageManager()

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 MediaStore.Files-Tabelle.

  • Zugriff auf das Stammverzeichnis des OTG-Laufwerks (OTG) für unterwegs und der SD-Karte .

  • Schreibzugriff auf alle internen Speicherverzeichnisse außer /Android/data/, /sdcard/Android und die meisten Unterverzeichnisse von /sdcard/Android. Dieser Schreibzugriff umfasst direkte Dateizugriffe Pfad.

    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 werden Apps, MANAGE_EXTERNAL_STORAGE und die QUERY_ALL_PACKAGES wie z. B. Apps zur Dateiverwaltung, die Berechtigung getManageSpaceActivityIntent() Um Nutzer zur Verwaltung benutzerdefinierter Gruppenbereiche einer anderen App weiterzuleiten Aktivitäten.

Die Methode getManageSpaceActivityIntent() akzeptiert einen Paketnamen und eine 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 Datei Verwaltungs-App, die die Methode getManageSpaceActivityIntent() aufgerufen hat, Rufen Sie den zurückgegebenen Intent auf, um Nutzer zur benutzerdefinierten Aktivität weiterzuleiten.
  • null, wenn in der App mit dem angegebenen Paketnamen kein „Verwalten“-Attribut definiert ist Leerzeichen" Aktivitäten.

MANAGE_EXTERNAL_STORAGE für Tests aktivieren

So kannst du herausfinden, wie sich die Berechtigung „MANAGE_EXTERNAL_STORAGE“ auf deine App auswirkt: die Berechtigung zum Testen aktivieren. Führen Sie dazu folgenden Befehl aus: Befehl auf dem Computer, der mit dem Testgerät verbunden ist:

adb shell appops set --uid PACKAGE_NAME MANAGE_EXTERNAL_STORAGE allow

Google Play-Hinweis

Dieser Abschnitt enthält Hinweise 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 um Apps zu 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 ist im Mai 2021 in Kraft.

Wenn deine App auf Android 11 oder höher ausgerichtet ist und die MANAGE_EXTERNAL_STORAGE haben, wird in Android Studio die Lint-Warnung angezeigt, wie in Abbildung 1 dargestellt. Diese Warnung erinnert Sie daran, dass es im Google Play Store Richtlinie, die die Nutzung der Berechtigung einschränkt.

<ph type="x-smartling-placeholder">
</ph>
<ph type="x-smartling-placeholder">
</ph> Abbildung 1: Lint-Warnung in Android Studio, die Entwickler an die Google Play-Richtlinien bezüglich der MANAGE_EXTERNAL_STORAGE Berechtigung.

Fordere die Berechtigung MANAGE_EXTERNAL_STORAGE nur an, wenn deine App die datenschutzfreundlicheren APIs wie die Speicherungsfunktion Access Framework oder die Medien Store API. 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 ähnlich wie die folgenden, kann es wahrscheinlich Berechtigung MANAGE_EXTERNAL_STORAGE:

  • Dateiverwaltung
  • Apps zum Sichern und Wiederherstellen
  • Antiviren-Apps
  • Apps zur Dokumentverwaltung
  • Dateisuche auf dem Gerät
  • Laufwerk- und Dateiverschlüsselung
  • Datenmigration von Gerät zu Gerät