Daten- und Dateispeicher – Übersicht

Android verwendet ein Dateisystem, das den laufwerkbasierten Dateisystemen anderer Plattformen ähnelt. Das System bietet mehrere Optionen zum Speichern Ihrer App-Daten:

  • App-spezifischer Speicher:Speichern Sie Dateien, die nur für Ihre App bestimmt sind, entweder in speziellen Verzeichnissen innerhalb eines internen Speichervolumes oder in verschiedenen speziellen Verzeichnissen im externen Speicher. Verwenden Sie die Verzeichnisse im internen Speicher, um vertrauliche Daten zu speichern, auf die andere Apps nicht zugreifen dürfen.
  • Gemeinsamer Speicher: Hier können Sie Dateien speichern, die Ihre App für andere Apps freigeben soll, z. B. Medien, Dokumente und andere Dateien.
  • Einstellungen:Speichern Sie private, primitive Daten in Schlüssel/Wert-Paaren.
  • Datenbanken:Mit der Room-Persistenzbibliothek können Sie strukturierte Daten in einer privaten Datenbank speichern.

Die Eigenschaften dieser Optionen sind in der folgenden Tabelle zusammengefasst:

Art der Inhalte Zugriffsmethode Berechtigungen erforderlich Können andere Apps darauf zugreifen? Werden Dateien bei der Deinstallation einer App entfernt?
App-spezifische Dateien Dateien, die ausschließlich für Ihre App bestimmt sind Im internen Speicher: getFilesDir() oder getCacheDir()

Im externen Speicher: getExternalFilesDir() oder getExternalCacheDir()
Nicht erforderlich für den internen Speicher

Nicht erforderlich für den externen Speicher, wenn Ihre App auf Geräten mit Android 4.4 (API-Level 19) oder höher verwendet wird
Nein Ja
Medien Gemeinsam nutzbare Mediendateien (Bilder, Audiodateien, Videos) MediaStore API READ_EXTERNAL_STORAGE beim Zugriff auf Dateien anderer Apps unter Android 11 (API-Level 30) oder höher

READ_EXTERNAL_STORAGE oder WRITE_EXTERNAL_STORAGE beim Zugriff auf Dateien anderer Apps unter Android 10 (API-Level 29)

Berechtigungen sind für alle Dateien unter Android 9 (API-Level 28) oder niedriger erforderlich.
Ja, aber die andere App benötigt die Berechtigung READ_EXTERNAL_STORAGE. Nein
Dokumente und andere Dateien Andere Arten von Inhalten, die geteilt werden können, einschließlich heruntergeladener Dateien Storage Access Framework Keine Ja, über die Systemdateiauswahl Nein
App-Einstellungen Schlüssel/Wert-Paare Jetpack-Einstellungen Keine Nein Ja
Datenbank Strukturierte Daten Room-Persistenzbibliothek Keine Nein Ja

Die von Ihnen gewählte Lösung hängt von Ihren spezifischen Anforderungen ab:

Wie viel Speicherplatz benötigen Ihre Daten?
Der interne Speicher bietet nur begrenzten Speicherplatz für appspezifische Daten. Verwenden Sie andere Speichertypen, wenn Sie eine große Menge an Daten speichern müssen.
Wie zuverlässig muss der Datenzugriff sein?
Wenn für die grundlegenden Funktionen Ihrer App bestimmte Daten erforderlich sind, z. B. beim Starten der App, platzieren Sie die Daten im internen Speicherverzeichnis oder in einer Datenbank. Auf app-spezifische Dateien, die im externen Speicher gespeichert sind, kann nicht immer zugegriffen werden, da Nutzer auf einigen Geräten ein physisches Gerät entfernen können, das dem externen Speicher entspricht.
Welche Art von Daten müssen Sie speichern?
Wenn Sie Daten haben, die nur für Ihre App relevant sind, verwenden Sie app-spezifischen Speicher. Verwenden Sie für freigegebene Medieninhalte freigegebenen Speicher, damit andere Apps auf die Inhalte zugreifen können. Verwenden Sie für strukturierte Daten entweder Einstellungen (für Schlüssel/Wert-Daten) oder eine Datenbank (für Daten mit mehr als zwei Spalten).
Sollten die Daten für Ihre App privat sein?
Verwenden Sie für vertrauliche Daten, auf die keine andere App zugreifen darf, den internen Speicher, die Einstellungen oder eine Datenbank. Der interne Speicher hat den zusätzlichen Vorteil, dass die Daten für Nutzer ausgeblendet sind.

Kategorien von Speicherorten

Android bietet zwei Arten von physischen Speicherorten: interner Speicher und externer Speicher. Auf den meisten Geräten ist der interne Speicher kleiner als der externe. Der interne Speicher ist jedoch auf allen Geräten immer verfügbar. Daher ist er ein zuverlässigerer Ort, um Daten zu speichern, von denen Ihre App abhängt.

Wechseldatenträger wie eine SD-Karte werden im Dateisystem als Teil des externen Speichers angezeigt. Android stellt diese Geräte über einen Pfad wie /sdcard dar.

Apps selbst werden standardmäßig im internen Speicher gespeichert. Wenn dein APK sehr groß ist, kannst du in der Manifestdatei deiner App festlegen, dass deine App stattdessen im externen Speicher installiert werden soll:

<manifest ...
  android:installLocation="preferExternal">
  ...
</manifest>

Berechtigungen und Zugriff auf externen Speicher

Android definiert die folgenden speicherbezogenen Berechtigungen: READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE und MANAGE_EXTERNAL_STORAGE.

In früheren Android-Versionen mussten Apps die Berechtigung READ_EXTERNAL_STORAGE angeben, um auf Dateien außerhalb der app-spezifischen Verzeichnisse im externen Speicher zugreifen zu können. Außerdem mussten Apps die Berechtigung WRITE_EXTERNAL_STORAGE deklarieren, um in Dateien außerhalb des app-spezifischen Verzeichnisses schreiben zu können.

In neueren Android-Versionen wird bei der Bestimmung der Zugriffs- und Schreibberechtigungen einer App für eine bestimmte Datei eher der Zweck als der Speicherort der Datei berücksichtigt. Insbesondere wenn Ihre App auf Android 11 (API-Level 30) oder höher ausgerichtet ist, hat die Berechtigung WRITE_EXTERNAL_STORAGE keinen Einfluss auf den Zugriff Ihrer App auf den Speicher. Dieses zweckbasierte Speichermodell verbessert den Datenschutz für Nutzer, da Apps nur auf die Bereiche des Dateisystems des Geräts zugreifen können, die sie tatsächlich verwenden.

Mit Android 11 wird die Berechtigung MANAGE_EXTERNAL_STORAGE eingeführt, die Schreibzugriff auf Dateien außerhalb des app-spezifischen Verzeichnisses und MediaStore gewährt. Weitere Informationen zu dieser Berechtigung und dazu, warum die meisten Apps sie nicht deklarieren müssen, um ihre Anwendungsfälle zu erfüllen, finden Sie in der Anleitung zum Verwalten aller Dateien auf einem Speichergerät.

Speicherplatz mit Begrenzung

Damit Nutzer mehr Kontrolle über ihre Dateien haben und die Anzahl der Dateien reduziert wird, erhalten Apps, die auf Android 10 (API-Level 29) oder höher ausgerichtet sind, standardmäßig eingeschränkten Zugriff auf den externen Speicher, den sogenannten eingeschränkten Speicher. Solche Apps haben nur Zugriff auf das app-spezifische Verzeichnis im externen Speicher sowie auf bestimmte Medientypen, die von der App erstellt wurden.

Verwenden Sie den begrenzten Speicher, es sei denn, Ihre App benötigt Zugriff auf eine Datei, die sich außerhalb eines app-spezifischen Verzeichnisses und außerhalb eines Verzeichnisses befindet, auf das die MediaStore-APIs zugreifen können. Wenn Sie anwendungsspezifische Dateien auf einem externen Speicher speichern, können Sie die Verwendung des begrenzten Speichers vereinfachen, indem Sie diese Dateien in einem anwendungsspezifischen Verzeichnis auf einem externen Speicher ablegen. So behält Ihre App den Zugriff auf diese Dateien, wenn der Speicher mit begrenztem Zugriff aktiviert ist.

Informationen zum Vorbereiten der Anwendung für den begrenzten Speicher finden Sie im Leitfaden Speicheranwendungsfälle und Best Practices. Wenn es für Ihre Anwendung einen anderen Anwendungsfall gibt, der nicht durch den begrenzten Speicher abgedeckt ist, reichen Sie eine Funktionsanfrage ein. Sie können die Verwendung des begrenzten Speichers vorübergehend deaktivieren.

Dateien auf einem Gerät ansehen

Wenn Sie sich die auf einem Gerät gespeicherten Dateien ansehen möchten, verwenden Sie den Device File Explorer von Android Studio.

Weitere Informationen

Weitere Informationen zum Datenspeicher finden Sie in den folgenden Ressourcen.

Videos