Schreibzugriff auf externe Speichermedien in Android 4.4 (Kitkat) aktivieren

Aus Android Wiki

Das Update auf Android 4.4 KitKat "KitKat" KitKat beinhaltet nicht nur einige neue Funktionen und Verbesserungen, sondern auch ein von Google in dieser Android-Version leicht angepasstes Berechtigungssystem. Diese Änderung bezieht sich auf den Zugriff verschiedener Programme ("Apps") auf externe Speichermedien, zum Beispiel einer SD-Karte. Durch die Änderung ist es einer App mit der Berechtigung android.permission.WRITE_EXTERNAL_STORAGE nicht mehr erlaubt, auf den kompletten externen Speicher Daten zu schreiben.

Hintergrund[Bearbeiten | Quelltext bearbeiten]

Zur Erklärung der Änderung muss leider etwas weiter ausgeholt werden, um die Grundlage und den Hintergrund besser verstehen zu können. Die Berechtigungen, die eine App bekommt, werden durch den Entwickler in der AndroidManifest.xml der App festgelegt. Android selbst setzt die angeforderten Berechtigungen durch (Benutzer-)Gruppen um. Bei der Installation einer App wird dem Benutzer (welcher für die App neu angelegt wurde) die entsprechenden Gruppen zugeteilt, welche für die angeforderten Berechtigungen benötigt werden.

Welche Gruppe welcher Berechtigung zugeordnet ist, wird in der platform.xml definiert. Diese Konfigurationsdatei ist in der /system-Partition zu finden.

Durch die Änderung in Android 4.4 KitKat "KitKat" hat die Gruppe mit der Gruppen-ID sdcard_rw keinen vollen Schreibzugriff mehr auf externe Speichermedien (wie vor Android 4.4 KitKat "KitKat"). Die Gruppe hat nur Zugriff auf ein für die App erstelltes Verzeichnis. Dies soll laut Google sicherstellen, dass Android bei der Deinstallation einer App auch alle abgelegten Inhalte auf den externen Speichermedien löschen kann. Dies schränkt allerdings Apps erheblich ein, die den vollen Zugriff für ihre Grundfunktionalität benötigen, bspw. ein Dateimanager.

Schreibzugriff auf das komplette Speichermedium wiederherstellen (Lösung)[Bearbeiten | Quelltext bearbeiten]

Sofern kein Root-Zugriff oder kein Schreibzugriff auf die /system-Partition besteht, gibt es derzeit leider keine Lösung, bzw. keinen Workaround, der das Schreiben auf die komplette SD-Karte durch Apps erlaubt. Dies begründet sich in der Tatsache, dass für einen Workaround die Berechtigungen einer Berechtigungsgruppe in der oben erwähnten platform.xml geändert werden müssen, worfür Schreibzugriff auf die /system-Partition benötigt wird.

Sind diese Voraussetzungen erfüllt (Root-Zugriff und Schreibzugriff auf die /system-Partition), kann die bereits erwähnte platform.xml (/system/etc/permissions/platform.xml) mit einem Texteditor bearbeitet werden. Die Gruppe media_rw hat weiterhin vollen Zugriff auf die externen Speichermedien. Fügt man diese Gruppe zu der Berechtigung android.permission.WRITE_EXTERNAL_STORAGE hinzu, haben auch die Apps, die diese Berechtigung anfordern, wieder vollen Schreibzugriff auf die SD-Karte:

  1. platform.xml mit einem Texteditor öffnen
    1. am Smartphone:
      1. Dateimanager öffnen
      2. zum Verzeichnis /system/etc/permissions/ navigieren
      3. platform.xml öffnen
    2. am PC mittels adb:
      1. Kommandozeilenfenster öffnen ([WINDOWS] + [R] -> "cmd" -> [ENTER])
      2. zum Ordner der adb.exe navigieren (bspw.: cd C:\android\adb-tools\)
      3. adb pull /system/etc/permissions/platform.xml platform.xml eingeben und mit [ENTER] bestätigen
      4. die im Ordner der adb.exe neu gespeicherte platform.xml mit einem beliebigen Texteditor öffnen
  2. den Eintrag <permission name="android.permission.WRITE_EXTERNAL_STORAGE" > suchen
  3. unter <group gid="sdcard_rw" /> die Zeichenkette <group gid="media_rw" /> hinzufügen
  4. Datei speichern
  5. (wenn der PC zum bearbeiten verwendet wurde) platform.xml wieder auf das Smartphone kopieren und die Berechtigung 644 setzten, per ADB:
    1. adb push platform.xml /system/etc/permissions/ um die geänderte platform.xml wieder auf das Gerät zu übertragen
    2. adb shell eingeben und mit [ENTER] bestätigen
    3. mit cd /system/etc/permissions/ zum entsprechenden Ordner navigieren
    4. chmod 644 platform.xml eingeben und mit [ENTER] bestätigen
    5. kommt keine Fehlermeldung, wurden die Berechtigungen erfolgreich gesetzt
  6. Smartphone neu starten

Nun sollte auch der Schreibzugriff auf die SD-Karte wieder wie vorher funktionieren.