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 innerhalb von internen Speicher, um vertrauliche Daten zu speichern, auf die andere Apps keinen Zugriff haben sollen.
- Gemeinsam genutzter Speicher:Damit können Sie Dateien speichern, die Ihre App für andere Nutzer freigeben soll. Apps, einschließlich Medien, Dokumenten und anderen 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 der App entfernt? | |
---|---|---|---|---|---|
App-spezifische Dateien | Dateien, die nur für die Verwendung in deiner App bestimmt sind | Im internen Speicher: getFilesDir() oder getCacheDir() Im externen Speicher: getExternalFilesDir() oder getExternalCacheDir() |
Nicht für den internen Speicher erforderlich Nicht für den externen Speicher erforderlich, wenn Ihre App auf Geräten mit Android 4.4 (API-Level 19) oder höher verwendet wird |
Nein | Ja |
Medien | Mediendateien, die freigegeben werden können (Bilder, Audiodateien, Videos) | MediaStore API |
READ_EXTERNAL_STORAGE beim Zugriff auf Dateien anderer Apps unter Android 11 (API-Level 30) oder höherREAD_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 freigegebenen Inhalten, einschließlich heruntergeladener Dateien | Storage Access Framework | Keine | Ja, über die Systemdateiauswahl | Nein |
App-Einstellungen | Schlüssel/Wert-Paare | Jetpack Bibliothek der Einstellungen | Keine | Nein | Ja |
Datenbank | Strukturierte Daten | Chatroom-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?
- Im internen Speicher ist der Speicherplatz für appspezifische Daten begrenzt. Andere Arten von wenn Sie eine große Datenmenge sparen 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, legen Sie die Daten im internen Speicherverzeichnis oder in einer Datenbank ab. Nicht immer kann auf App-spezifische Dateien im externen Speicher zugegriffen werden da Nutzer auf einigen Geräten ein physisches Gerät entfernen können, externen Speicher.
- Welche Art von Daten müssen gespeichert werden?
- Wenn Sie Daten haben, die nur für Ihre App relevant sind, verwenden Sie App-spezifische Speicherplatz. Verwenden Sie für freigegebene Medieninhalte freigegebenen Speicher, damit andere Apps auf die Inhalte zugreifen können. Verwenden Sie für strukturierte Daten beide Einstellungen (für Schlüssel/Wert-Paare Daten) oder eine Datenbank (für Daten mit mehr als 2 Spalten).
- Sollten die Daten für Ihre App privat sein?
- Verwenden Sie zum Speichern vertraulicher 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 externen Speichers. Auf den meisten Geräten ist der interne Speicher kleiner als der externe Speicher. Speicherplatz. 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 dar, z. B.
/sdcard
Die Apps selbst werden standardmäßig im internen Speicher gespeichert. Wenn Ihre APK-Größe sehr groß ist. Sie können jedoch im Manifest Ihrer App eine Präferenz angeben. -Datei, um Ihre App stattdessen im externen Speicher zu installieren:
<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 müssen Apps, in denen die Schreibberechtigung WRITE_EXTERNAL_STORAGE
erklärt werden muss,
eine beliebige Datei außerhalb des
anwendungsspezifischen Verzeichnisses.
Neuere Android-Versionen verlassen sich eher auf den Zweck einer Datei als auf ihren Speicherort
zum Bestimmen der Fähigkeit einer Anwendung, auf eine bestimmte Datei zuzugreifen und in diese zu schreiben. 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. Zweckbasiertes Speichermodell verbessert den Datenschutz
da Apps nur Zugriff auf die Bereiche des Dateisystems des Geräts erhalten,
die sie tatsächlich nutzen.
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.
Begrenzter Speicher
Um Nutzern mehr Kontrolle über ihre Dateien zu geben und Dateien übersichtlicher zu gestalten, werden Apps, die Ziel-Android 10 (API-Level 29) und höher erhalten eingeschränkten Zugriff auf externe begrenztem Speicher verwendet. Solche Apps haben nur Zugriff auf das app-spezifische Verzeichnis im externen Speicher sowie auf bestimmte Medientypen, die von der App erstellt wurden.
Begrenzten Speicher verwenden, es sei denn, Ihre Anwendung benötigt Zugriff auf eine Datei, die außerhalb von gespeichert ist
eines app-spezifischen Verzeichnisses und außerhalb
eines Verzeichnisses, das die MediaStore
APIs haben Zugriff. Wenn Sie App-spezifische Dateien in einem externen Speicher speichern, können Sie
die Nutzung des begrenzten Speichers erleichtern, indem Sie diese Dateien in einem
app-spezifisches Verzeichnis auf externen
Speicherplatz. So behält Ihre App den Zugriff auf diese Dateien, wenn der Speicher mit begrenztem Zugriff aktiviert ist.
Informationen zur Vorbereitung Ihrer Anwendung auf den begrenzten Speicher finden Sie unter Speicheranwendungsfälle und Best Practices Leitfaden für Best Practices. Wenn Ihre App zu einem anderen Zweck die nicht durch den begrenzten Speicher abgedeckt ist, reichen Sie anfragen. Sie können die Verwendung von Speicherplatz mit Begrenzung 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 zur Datenspeicherung finden Sie in den folgenden Ressourcen.