Bearbeiten von „KitKat/Schreibzugriff Externe Speicher

    Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden. Ein eigenes Benutzerkonto hat eine ganze Reihe von Vorteilen.

    Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.

    Aktuelle Version Dein Text
    Zeile 1: Zeile 1:
    {{DISPLAYTITLE:Schreibzugriff auf externe Speichermedien in Android 4.4 (''Kitkat'') aktivieren}}
    {{DISPLAYTITLE:Schreibzugriff auf externe Speichermedien in Android 4.4 (''Kitkat'') aktivieren}}
    Das Update auf [[Android]] {{Android|4.4}} ''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 ("[[App|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.
    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 ==
    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.
    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.


    Welche Gruppe welcher Berechtigung zugeordnet ist, wird in der ''platform.xml'' definiert. Diese Konfigurationsdatei ist in der ''/system''-Partition zu finden.
    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 {{Android|4.4}} 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, 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]].
    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, 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. [[Dateimanager]].


    == Schreibzugriff auf das komplette Speichermedium wiederherstellen (Lösung) ==
    == Lösung ==
    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.
    Derzeit gibt es keine Lösung, bzw. keinen Workaround, der das Schreiben auf die komplette SD-Karte durch Apps erlaubt, wenn man keinen [[Root]]-Zugriff, sowie keinen Schreibzugriff auf die /system-Partition hat hat. 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. Auf die /system-Partition wird hierfür Schreibzugriff benötigt.


    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:
    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:
    ### Dateimanager öffnen
    ## Dateimanager öffnen
    ### zum Verzeichnis ''/system/etc/permissions/'' navigieren
    ## zum Verzeichnis ''/system/etc/permissions/'' navigieren
    ### ''platform.xml'' öffnen
    ## ''platform.xml'' öffnen
    ## am PC mittels [[adb]]:
    # am PC mittels [[adb]]:
    ### Kommandozeilenfenster öffnen ([WINDOWS] + [R] -> "cmd" -> [ENTER])
    ## Kommandozeilenfenster öffnen ([WINDOWS] + [R] -> "cmd" -> [ENTER])
    ### zum Ordner der ''adb.exe'' navigieren (bspw.: ''cd C:\android\adb-tools\'')
    ## zum Ordner der ''adb.exe'' navigieren (bspw.: ''cd C:\android\adb-tools\'')
    ### ''adb pull /system/etc/permissions/platform.xml platform.xml'' eingeben und mit [ENTER] bestätigen
    ## ''adb pull /system/etc/permissions/platform.xml platform.xml'' eingeben und mit [ENTER] bestätigen
    ### die im Ordner der ''adb.exe'' neu gespeicherte ''platform.xml'' mit einem beliebigen Texteditor öffnen
    ## die im Ordner der ''adb.exe'' neu gespeicherte ''platform.xml'' mit einem beliebigen Texteditor öffnen
    # den Eintrag ''<permission name="android.permission.WRITE_EXTERNAL_STORAGE" >'' suchen
    # den Eintrag ''<permission name="android.permission.WRITE_EXTERNAL_STORAGE" >'' suchen
    # unter ''<group gid="sdcard_rw" />'' die Zeichenkette ''<group gid="media_rw" />'' hinzufügen
    # unter ''<group gid="sdcard_rw" />'' die Zeichenkette ''<group gid="media_rw" />'' hinzufügen
    # Datei speichern
    # Datei speichern
    # (wenn der PC zum bearbeiten verwendet wurde) ''platform.xml'' wieder auf das Smartphone kopieren und die Berechtigung 644 setzten, per ADB:
    # ''platform.xml'' wieder auf das Smartphone kopieren und die Berechtigung 644 setzten, per ADB:
    ## ''adb push platform.xml /system/etc/permissions/ ''um die geänderte platform.xml wieder auf das Gerät zu übertragen
    ## ''adb push platform.xml /system/etc/permissions/ ''um die geänderte platform.xml wieder auf das Gerät zu übertragen
    ## ''adb shell'' eingeben und mit [ENTER] bestätigen
    ## ''adb shell'' eingeben und mit [ENTER] bestätigen
    Bitte kopiere keine Webseiten, die nicht deine eigenen sind, benutze keine urheberrechtlich geschützten Werke ohne Erlaubnis des Urhebers!
    Du gibst uns hiermit deine Zusage, dass du den Text selbst verfasst hast, dass der Text Allgemeingut (public domain) ist, oder dass der Urheber seine Zustimmung gegeben hat. Falls dieser Text bereits woanders veröffentlicht wurde, weise bitte auf der Diskussionsseite darauf hin. Bitte beachte, dass alle Android Wiki-Beiträge automatisch unter der „Creative Commons Attribution/Share-Alike Lizenz 3.0“ stehen. Falls du nicht möchtest, dass deine Arbeit hier von anderen verändert und verbreitet wird, dann klicke nicht auf „Seite speichern“.

    Um das Wiki vor automatisiertem Bearbeitungsspam zu schützen, bitten wir dich, das folgende CAPTCHA zu lösen:

    Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)