Beschreiben verboten

Einschränkungen beim Zugriff auf SD-Karten unter Android 4.4 und 5.0

Praxis & Tipps | Praxis

Seit Android 4.4 dürfen Apps nur noch eingeschränkt auf die SD-Karte schreiben. Nutzer können das entweder pragmatisch umgehen oder umständlich reparieren. Erst mit Android 5 hat Google weitere Änderungen eingeführt, die Hoffnung machen – für Nutzer und für Entwickler.

Wenn der interne Speicher des Smartphones nicht reicht, steckt man einfach eine SD-Karte rein und alles wird gut? So einfach lief das unter Android noch nie, denn die SD-Anbindung ist kompliziert, sodass nur wenige Entwickler ihre App fit für die SD-Karte gemacht haben. Und diesen wirft Google mit Android 4.4 einen Knüppel zwischen die Beine: Die bisherigen Entwickler-Tricks zum Zugriff auf die Speicherkarte funktionieren nicht mehr, Apps dürfen sie nicht beschreiben.

Das macht sich vor allem bei Dateimanagern bemerkbar, mit denen man nun auf der SD-Karte keine Dateien mehr kopieren, verschieben, löschen oder umbenennen kann. Aber auch Bild- und Textverarbeitungen haben dort nun keinen Zugriff auf die Dateien anderer Apps. Apps zum Synchronisieren von Musiksammlungen mit einem PC können die MP3-Dateien nicht auf der Speicherkarte ablegen. Alternative Kamera-Apps dürfen Fotos nur noch im Gerätespeicher speichern. ...

Android-Speicherverwaltung

Die Speicherverwaltung von Android wirkt unnötig kompliziert und gleichzeitig unflexibel. Das liegt daran, dass sie historisch gewachsen ist und Google vor allem auf den wachsenden internen Gerätespeicher erst spät reagiert hat.

Die ersten Android-Geräte mussten mit einem internen Speicher von wenigen hundert Megabyte auskommen. Eine SD-Karte war vorgesehen, beim Zugriff mussten Betriebssystem und Entwickler aber anders vorgehen als beim internen Speicher, weil die SD-Karte ja auch fehlen oder per USB an den PC freigegeben sein kann. Um den knappen internen Speicher zu schonen, haben gerade Apps mit großem Speicherhunger möglichst viel auf die SD-Karte ausgelagert. Wenn der Entwickler es vorsah, ließen sich Apps nach ihrer Installation unter Einschränkungen (keine Widgets, kein Autostart beim Booten) auf die SD-Karte verschieben. Der interne Speicher sah keine Möglichkeit vor, Bilder oder Musik für mehrere Apps zugänglich zu speichern, das ging nur per SD-Karte. Das war alles kompliziert, aber immerhin eindeutig.

Größere Speicher

Doch als die Telefonspeicher (etwa zu Zeiten von Android 2.1 bis 2.3) auf mehrere Gigabyte wuchsen, konnten die Hersteller den Platz nicht einfach diesem internen Speicher zuschlagen, denn zu viele Apps und Funktionen nutzten die SD-Karte. Also partitionierten die Hersteller den Gerätespeicher in einen kleinen internen Bereich und in einen größeren (manchmal als USB-Speicher angezeigten) Bereich, der über das eigentlich für SD-Karten vorgesehene External-API angesprochen wurde. Ideal war das nicht. Beispielsweise ließen sich keine Apps mehr installieren, wenn der interne Bereich voll war – selbst wenn im zweiten Bereich genügend Platz gewesen wäre.

Noch unangenehmer waren die Folgen für Geräte mit echter SD-Karte, denn das External-API war durch den Partitionierungs-Trick ja belegt. Die Hersteller haben daher die echten SD-Karten irgendwo in den Android-Verzeichnisbaum eingehängt – und zwar in Ermangelung eines Standards jeder Hersteller an eine andere Stelle. Einige davon haben wir in [2] zusammengetragen, samt Trick, wie Apps die SD-Karte aufspüren können. Nur wenige Programmierer implementierten das alles.

Für Verwirrung sorgt zudem, dass einige Apps zwar angeblich die SD-Karte ansprechen, damit aber den Bereich des eingebauten Speichers meinen, der über das External-API angebunden ist. Apps lassen sich zudem nicht auf die echten SD-Karten verschieben – wobei einige Hersteller das für einzelne Modelle (entgegen der Android-Spezifikation) doch eingebaut haben.

Wiedervereint

Mit Android 3 führte Google den sogenannten „unified memory“ ein, eher ein Hack zum Umgehen der Nachteile des Partitionierungs-Tricks als eine wirkliche Lösung. Dabei zeigen die beiden internen logischen Partitionen auf denselben physischen Speicher, beide können also den gesamten Gerätespeicher nutzen. Die getrennten APIs zum Ansprechen desselben Speichers bleiben aber bestehen, und ein API zum Auffinden der echten SD-Karten fehlt weiterhin.

Alle uns bekannten seit Android 3 ausgelieferten Geräte nutzen diese Speicheraufteilung. Android selbst und auch die meisten modernen Apps erkennen das und unterscheiden nicht mehr zwischen App- und External-Speicher, beide werden meist als interner Speicher bezeichnet.

Mit Android 4.4 kommt zwar endlich eine offizielle Funktion zum Auffinden der SD-Karte, doch sie ist nur halbherzig implementiert: Apps bekommen nur einen eigenen Ordner zugeteilt, können aber auf andere Ordner auf der SD-Karte nicht schreiben. Ab Android 5 bekommen sie ein zweites eigenes Verzeichnis zugeordnet, das der Medienscanner durchsucht.

Für Nutzer bleibt weiterhin unklar, welchen Speicherbereich eine App unter „SD-Karte“ anspricht: den per External-API angebundenen und inzwischen immer im Gerät liegenden Speicher, das mit Android 4.4 eingeführte private Verzeichnis auf der echten Karte oder ein Verzeichnis auf der echten Karte, auf das der Zugriff ab Android 4.4 nicht mehr klappt – da hilft nur ausprobieren.

Sie möchten wissen, wie es weitergeht?

Beschreiben verboten

1,49 €*

c't 03/2015, Seite 150 (ca. 4 redaktionelle Seiten)
Direkt nach dem Kauf steht Ihnen der Artikel als PDF zum Download zur Verfügung.

Artikel-Vorschau
  1. So geht das jetzt
  2. Dann halt nicht
  3. Rooten als Ausweg
  4. Aus Programmierer-Sicht
  5. Android-Speicherverwaltung
  6. Für Entwickler: das Finden von SD/USB

Lesen Sie hier die Verbraucherinformationen

* Alle Preise verstehen sich inklusive der gesetzlichen MwSt.

Als c't-Plus-Abonnent gratis lesen

weiterführende Links

Weitere Bilder

  • Apps dürfen in ihr privates Verzeichnis schreiben. Das liegt unter /Android/data auf der Karte, doch der Medienscanner durchsucht es nicht.
  • Vom PC aus hat man per USB vollen Zugriff auf die SD-Karte. Das reicht, will man nur Musik und Videos auf der Karte speichern.
  • Unter Geräten ab Android 3.0 zeigen /data und /mnt/sdcard auf denselben Speicherbereich. Einige Apps (hier der Desktop-Client von AirDroid) zeigen den Bereich daraufhin doppelt an.
  • Ob eine App unter „SD-Card“ eine physische Karte meint oder auf den Partitionierungs-Trick hereinfällt und die Daten im Gerätespeicher landen, findet man nur durch Ausprobieren heraus.

Kommentare

Infos zum Artikel

Kapitel
  1. So geht das jetzt
  2. Dann halt nicht
  3. Rooten als Ausweg
  4. Aus Programmierer-Sicht
  5. Android-Speicherverwaltung
  6. Für Entwickler: das Finden von SD/USB
11Kommentare
Kommentare lesen (11 Beiträge)
  1. Avatar
  2. Avatar
  3. Avatar
Anzeige
Bilder

Anzeige

weiterführende Links
  1. Zu diesem Artikel hat die Redaktion noch folgendes zusammengestellt:

    Links (7)

Artikel zum Thema
Anzeige