KitKat/Schreibzugriff Externe Speicher: Unterschied zwischen den Versionen

Aus Android Wiki
(Die Seite wurde neu angelegt: „Mit dem Update auf Android {{Android|4.4}} ''KitKat'' erhält der Nutzer nicht nur einige neue Funktionen und Verbesserungen, sondern ebenfalls ein von Goo…“)
 
KKeine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
Mit dem Update auf [[Android]] {{Android|4.4}} ''KitKat'' erhält der Nutzer nicht nur einige neue Funktionen und Verbesserungen, sondern ebenfalls ein von Google in dieser Android-Version leicht angepasstes Berechtigungssystem. Diese Änderung bezieht sich auf den Zugriff auf [[Externer Speicher|externe Speichermedien]], also einer externen 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 schreibend zuzugreifen.
Mit dem Update auf [[Android]] {{Android|4.4}} ''KitKat'' erhält der Nutzer 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 [[Externer Speicher|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 ==
== Hintergrund ==
Die Berechtigungen, die eine App bekommt, werden durch den Entwickler in der ''AndroidManifest.xml'' der App festgelegt. Android selbst setzt die angeforderten Berechtigungen durch Gruppen um. Bei der Installation einer App wird der für diese neu erstellte Benutzer den Gruppen hinzugefügt, welche für die angeforderten Berechtigungen benötigt werden.
Die Berechtigungen, die eine App bekommt, werden durch den Entwickler in der ''AndroidManifest.xml'' der App festgelegt. Android selbst setzt die angeforderten Berechtigungen durch Gruppen um. Bei der Installation einer App wird der für diese neu erstellte Benutzer den Gruppen hinzugefügt, welche für die angeforderten Berechtigungen benötigt werden.


Die Zuordnung, welche Gruppe welcher Berechtigung zugeordnet ist, wird in einer XML-Datei (/system/etc/permissions/platform.xml) auf der [[Partition]] /system festgelegt.
Die Zuordnung, welche Gruppe welcher Berechtigung zugeordnet ist, wird durch die in der /system/-Partition liegendenden Datei platform.xml (/system/etc/permissions/) definiert.


Durch die Änderung in Android {{Android|44}} hat die Gruppe mit der Gruppen-ID ''sdcard_rw'' keinen vollen Schreibzugriff mehr auf externe Speichermedien (wie vor Android {{Android|4.4}}). Die Gruppe hat nur noch Zugriff auf ein für die App erstelltes Verzeichnis. Dies soll laut Google sicherstellen, das Android bei der Deinstallation einer App auch alle gespeicherten Inhalte auf den externen Speichermedien gelöscht werden könne. Dies schränkt allerdings bspw. [[Dateimanager]] erheblich in ihrer eigentlichen Funktion ein.
Durch die Änderung in Android {{Android|44}} hat die Gruppe mit der Gruppen-ID ''sdcard_rw'' keinen vollen Schreibzugriff mehr auf externe Speichermedien (wie vor Android {{Android|4.4}}). Die Gruppe hat nur Zugriff auf ein für die App erstelltes Verzeichnis. Dies soll laut Google sicherstellen, das Android bei der Deinstallation einer App auch alle gespeicherten Inhalte auf den externen Speichermedien löschen kann. Dies schränkt allerdings besondere Apps, bspw. [[Dateimanager]], erheblich in ihrer eigentlichen Funktion ein.


== Lösung ==
== Lösung ==
Da das Berechtigungssystem recht tief im System integriert ist, gibt es derzeit keine Lösung oder Workaround, die das Schreiben auf die komplette SD-Karte durch Apps erlaubt, wenn man keinen Root-Zugriff auf das Gerät hat. Zudem benötigt man Schreibzugriff auf die /system-Partition.
Da das Berechtigungssystem in Android auf der /system/-Partition geregelt wird, gibt es derzeit keine Lösung oder Workaround, die das Schreiben auf die komplette SD-Karte durch Apps erlaubt, wenn man keinen [[Root]]-Zugriff auf das Gerät hat.  
Zudem wird Schreibzugriff auf das System benötigt.


Sind diese Voraussetzungen erfüllt, kann man die bereits erwähnte platform.xml (/system/etc/permissions/platform.xml) mit einem Texteditor bearbeiten. 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:
Sind diese Voraussetzungen erfüllt, 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:
# ''platform.xml'' mit einem Texteditor öffnen
# ''platform.xml'' mit einem Texteditor öffnen
# am Smartphone:
# am Smartphone:

Version vom 28. Mai 2014, 08:22 Uhr

Mit dem Update auf Android 4.4 KitKat "KitKat" KitKat erhält der Nutzer 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

Die Berechtigungen, die eine App bekommt, werden durch den Entwickler in der AndroidManifest.xml der App festgelegt. Android selbst setzt die angeforderten Berechtigungen durch Gruppen um. Bei der Installation einer App wird der für diese neu erstellte Benutzer den Gruppen hinzugefügt, welche für die angeforderten Berechtigungen benötigt werden.

Die Zuordnung, welche Gruppe welcher Berechtigung zugeordnet ist, wird durch die in der /system/-Partition liegendenden Datei platform.xml (/system/etc/permissions/) definiert.

Durch die Änderung in Android 44 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, das Android bei der Deinstallation einer App auch alle gespeicherten Inhalte auf den externen Speichermedien löschen kann. Dies schränkt allerdings besondere Apps, bspw. Dateimanager, erheblich in ihrer eigentlichen Funktion ein.

Lösung

Da das Berechtigungssystem in Android auf der /system/-Partition geregelt wird, gibt es derzeit keine Lösung oder Workaround, die das Schreiben auf die komplette SD-Karte durch Apps erlaubt, wenn man keinen Root-Zugriff auf das Gerät hat. Zudem wird Schreibzugriff auf das System benötigt.

Sind diese Voraussetzungen erfüllt, 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
  2. am Smartphone:
    1. Dateimanager öffnen
    2. zum Verzeichnis /system/etc/permissions/ navigieren
    3. platform.xml öffnen
  3. 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
  4. den Eintrag <permission name="android.permission.WRITE_EXTERNAL_STORAGE" > suchen
  5. unter <group gid="sdcard_rw" /> die Zeichenkette <group gid="media_rw" /> hinzufügen
  6. Datei speichern
  7. platform.xml wieder auf das Smartphone kopieren und die Berechtigung 644 setzten, per ADB:
    1. adb shell eingeben und mit [ENTER] bestätigen
    2. mit cd /system/etc/permissions/ zum entsprechenden Ordner navigieren
    3. chmod 644 platform.xml eingeben und mit [ENTER] bestätigen
    4. kommt keine Fehlermeldung, wurden die Berechtigungen erfolgreich gesetzt
  8. Smartphone neu starten

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