schreibtrechte auf externe SD-Card mit kitkat 4.4.2 nicht mehr möglich

  • Antworten:80
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 286

14.03.2014, 14:46:37 via Website

Seit Android Version 4.4.2 erhalte ich von bestimmten Benutzern die Fehlermeldung “EACCES permission denied”

Durch googeln und debuggen auf meiner Seite, habe ich herausgefunden, dass mit 4.4.2 nicht mehr auf die SD-Karte geschrieben werden kann, da Google eine neue Policy mit 4.4.2 eingeführt hat.

Ich verstehe das Ganze noch nicht ganz und weiss nicht wie damit umzugehen. Kann mir jemand dazu helfen ?

Da es bisher keine Funktion gab um ein geeignete externe Storage Medium zu erhalten ( externe sdkarten wurden durch Environment.getExternalStorageDirectory().getPath() nicht erhalten ) habe ich den Speicherort primitiv mit einer Liste von Pfaden gesucht. Ich gehe einfach durch eine Anzahl fixer Pfade
und schaue, wo es am meisten Platz hat. Dann habe ich diesen Pfad zum schreiben meiner Daten festgelegt.


fixe liste mit Pfaden:

/sdcard

alPathes.add(Environment.getExternalStorageDirectory().getPath());

/mnt/sdcard/tflash
/mnt/external_sd
/mnt/sdcard/external_sd
/mnt/extSdCard
/storage/extSdCard
/mnt/ext_sdcard
storage/external SD

/sdcard/sd
/mnt/sdcard/bpemmctest
/mnt/sdcard/_ExternalSD
/mnt/sdcard-ext
/mnt/Removable/MicroSD
/Removable/MicroSD
/mnt/external1
/mnt/extSdCard
/mnt/extsd
/mnt/sdcard2
/mnt/sdcard3
/mnt/sdcard4
/mnt/sdcard5
/mnt/sdcard6

Wie sollte man das mit KITKAT richtig machen ? Wie soll ich vorgehen mit den Usern, die bereits die Daten in einem Pfad haben, aber nicht mehr schreiben können ?

mFG
Andreas

Antworten
  • Forum-Beiträge: 2.232

14.03.2014, 16:11:03 via Website

Moin,

bin zwar kein Entwickler, aber habe das Thema dennoch ein bisschen verfolgt. Bis also ein Profi einen Tipp hat, vielleicht schonmal als Ansatz für Dich zum Probieren:

Grundsätzlich hast Du seit 4.4 ganze ohne die WRITE_EXTERNAL_STORAGE-Berechtigung Schreib- und Leserechte auf den Ordner Android/data/<packagename> sowohl auf dem internen als auch dem externen Speicher.
Mit der Berechtigung hast Du Schreibrechte auf den kompletten interen Speicher und Leserechte auf den kompletten Externen Speicher. Die Namensgebung der Berechtigung ist also ziemlich verwirrend wie ich finde. Schreibrechte auf den kompletten externen Speicher gibt es nicht mehr, wie Du ja schon rausgefunden hast.

Für neue User reicht es also vielleicht den String "Android/data/<packagename>" an die Pfade in Deiner Pfadliste zu hängen, um im ersten Schritt nicht all zu viel ändern zu müssen.
Da Du mit der Berechtigung Leseberechtigung auf den kompletten externen Speicher hast, müsstest Du für bestehende Benutzer die Daten aus anderen Pfaden in Dein Applikations-Verzeichnis schieben bzw. kopieren, denn dummerweise kannst Du die alten Daten nicht löschen. Vielleicht einen Hinweis beim App-Start geben, dass der User dies mit einem interen Dateimanager selber machen muss (System-Apps dürfen weiterhin im externen Speicher schreiben/löschen)

Man korrigiere mich, falls die Angaben so nicht stimmen. Einen Tipp wie man das ohne Pfadliste hinbekommt hat sicher noch eine Profi für Dich. Würde mich wundern, wenn man die Existenz und den richtigen Pfad eines externen Speichers nicht einfacher ermitteln kann.

Weiter Quellen/Infos sonst auch hier und hier.

Antworten
  • Forum-Beiträge: 286

14.03.2014, 16:22:00 via Website

VIelen Dank für Deinen Beitrag. Das gibt einen guten Überblick der Problematik.

Eigentlich ist es schon absurd. Man kauft eine 32GB externe SD-Karte und kann Sie für Apps nicht gebrauchen, wie beispielsweise eine Navi-App oder eine Offline Wikipedia App oder meine App, die 800MB speichern möchte :-(

Würde mich freuen, wenn jemand noch wüsste, wie ich den Pfad auf eine erlaubt SD-Karte per API/Java-Methode erhalte.

Danke und Gruss

Antworten
  • Forum-Beiträge: 2.232

14.03.2014, 16:26:08 via Website

mcfly

Eigentlich ist es schon absurd. Man kauft eine 32GB externe SD-Karte und kann Sie für Apps nicht gebrauchen, wie beispielsweise eine Navi-App oder eine Offline Wikipedia App oder meine App, die 800MB speichern möchte :-(

Naja doch, kann man ja weiterhin im dedizierten Pfad (mnt/<externeSD>/Android/data/<packagename>). Die Umstellung ist halt nur recht nervig jetzt.

Viel schlimmer trifft es andere Apps, mit denen User bewusst "App-fremde" Daten auf der SD bearbeiten(kopieren/löschen) wollen - wie bspw. Foldersync.

— geändert am 14.03.2014, 16:27:44

Antworten
  • Forum-Beiträge: 33.139

14.03.2014, 17:02:32 via App

Wie jetzt... Mit KitKat kann auf eine externe SD Karte nicht mehr gespeichert werden???

Was soll das denn...!?

Ich bin entsetzt....

Herzliche Grüße

Carsten

Ich komm' mir langsam vor wie jemand, der ich bin // #cäthe

Antworten
  • Forum-Beiträge: 286

14.03.2014, 19:05:05 via Website

Hallo Luigi

Das tönt interessant. Nur verstehe ich es nicht ganz.

Ich habe einen User der hat eine externe SD Karte gemounted wie folgt /mnt/extSdCard/
Ich habe dem User ein Testprogramm geschickt um zu testen ob auf diesen Pfad geschrieben werden kann . -> new File("/mnt/extSdCard/").canWrite()
new File("/mnt/extSdCard/").canWrite() ergibt false bei ihm. D.h. /mnt/extSdCard/ ist nicht schreibbar.

Kann man denn trotzdem unter /mnt/extSdCard/Android/data/<packagename> schreiben ?

Path -> /mnt/extSdCard/
exists: true
write: false
read: false

— geändert am 14.03.2014, 19:05:16

Antworten
  • Forum-Beiträge: 286

14.03.2014, 19:09:01 via Website

Ja ich bin auch entsetzt. wirklich ! Anscheinend nicht bei allen Modellen mit KITKAT. Es ist mir immer noch ganz klar.
Ich erhalte seit die Leute KITKAT haben, emails mit Fehlern wenns ums schreiben geht.

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.170

14.03.2014, 19:22:59 via Website

Warum kannst du nicht einfach die nötige Berechtigung setzen?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 33.139

14.03.2014, 19:24:15 via App

©h®is
Ich bin kein entwicker, aber um was für daten geht es denn?

Apps können doch auf die externe sd speichern? (audible zb)
Wo speichert Audible genau? In einem beliebigen Verzeichnis auf der Sd Karte?

So wie ich das verstehe, kann eine App bei Android 4.4 lediglich noch in ein eigenes App-Verzeichnis auf der externen SD Karte speichern, nicht aber mehr in einem beliebigen Verzeichnis.

Herzliche Grüße

Carsten

Ich komm' mir langsam vor wie jemand, der ich bin // #cäthe

Antworten
  • Forum-Beiträge: 33.139

14.03.2014, 19:25:59 via App

Pascal P.
Warum kannst du nicht einfach die nötige Berechtigung setzen?
Weil es keine gibt. Es gibt nur die Berechtigung, von der SD Karte zu lesen und in ein (!) eigenes App-Verzeichnis zu schreiben. Nicht aber mehr wahlfrei irgendwo auf der SD-Karte.

Herzliche Grüße

Carsten

Ich komm' mir langsam vor wie jemand, der ich bin // #cäthe

Antworten
  • Forum-Beiträge: 24.201

14.03.2014, 19:29:15 via App

Carsten M.
©h®is
Ich bin kein entwicker, aber um was für daten geht es denn?

Apps können doch auf die externe sd speichern? (audible zb)
Wo speichert Audible genau? In einem beliebigen Verzeichnis auf der Sd Karte?

So wie ich das verstehe, kann eine App bei Android 4.4 lediglich noch in ein eigenes App-Verzeichnis auf der externen SD Karte speichern, nicht aber mehr in einem beliebigen Verzeichnis.

Herzliche Grüße

Carsten
In einem Audible Ordner

Aber mit meiner Office App kann ich auch den Speicherort bestimmen

— geändert am 14.03.2014, 19:29:26

StayDirty ツ


⇨Dirty⇦nexus5x [7.1.1]

⇨Dirty⇦ nexus4 [5.0.2]

⇨Dirty⇦ nexus7 (Flo) [6.0.1]

⇨CodefireX⇦desire hd [4.2.2]

Izzys App Übersicht | AndroidPITiden Buch

Antworten
  • Forum-Beiträge: 33.139

14.03.2014, 19:30:43 via App

©h®is

Aber mit meiner Office App kann ich auch den Speicherort bestimmen
Du hast aber auch Root, oder?
Und ich glaube, in manchen Custom Roms wurde das Problem beseitigt...

Herzliche Grüße
Carsten

— geändert am 14.03.2014, 19:31:02

Ich komm' mir langsam vor wie jemand, der ich bin // #cäthe

Antworten
  • Forum-Beiträge: 24.201

14.03.2014, 19:34:01 via App

Carsten M.
©h®is

Aber mit meiner Office App kann ich auch den Speicherort bestimmen
Du hast aber auch Root, oder?
Und ich glaube, in manchen Custom Roms wurde das Problem beseitigt...

Herzliche Grüße
Carsten
Ja
Nutze Omnirom (war aber auch beim anderen 4.4er Rom möglich)

Gut möglich :)

— geändert am 14.03.2014, 19:35:50

StayDirty ツ


⇨Dirty⇦nexus5x [7.1.1]

⇨Dirty⇦ nexus4 [5.0.2]

⇨Dirty⇦ nexus7 (Flo) [6.0.1]

⇨CodefireX⇦desire hd [4.2.2]

Izzys App Übersicht | AndroidPITiden Buch

Antworten
  • Forum-Beiträge: 2.232

17.03.2014, 10:25:36 via Website

mcfly
Hallo Luigi

Das tönt interessant. Nur verstehe ich es nicht ganz.

Ich habe einen User der hat eine externe SD Karte gemounted wie folgt /mnt/extSdCard/
Ich habe dem User ein Testprogramm geschickt um zu testen ob auf diesen Pfad geschrieben werden kann . -> new File("/mnt/extSdCard/").canWrite()
new File("/mnt/extSdCard/").canWrite() ergibt false bei ihm. D.h. /mnt/extSdCard/ ist nicht schreibbar.

Kann man denn trotzdem unter /mnt/extSdCard/Android/data/<packagename> schreiben ?

Wie man jetzt diesen Ordner erzeugt, in welchen man noch schreiben kann, weiß ich leider auch nicht.
Wenn Android zumindest den Ordner Android/data/ standardmäßig auf externen Karten erzeugt, könntest Du es doch einfach mal mit new File("/mnt/extSdCard/Android/data/<packagename>").mkdir() probieren.
Gibt es Android/data/ noch nicht, so muss es ja irgendeinen Mechanismus zur Anlage des App-eigenen Verzeichnisses geben, da Du gar keine Berechtigung hast von /mnt/extSdCard/ aus den Pfad einzeln zu erzeugen.

Edit: Müsste es nicht auf diesem Weg gehen?

— geändert am 17.03.2014, 12:05:14

Antworten
  • Forum-Beiträge: 286

17.03.2014, 16:54:18 via Website

Nein, weil das nur die primaere externe sdkarte betrifft.

Antworten
  • Forum-Beiträge: 2.232

17.03.2014, 17:04:50 via Website

mcfly
Nein, weil das nur die primaere externe sdkarte betrifft.

Ah stimmt, hatte ich überlesen, sorry.

Antworten
  • Forum-Beiträge: 1

04.04.2014, 21:32:18 via Website

Hallo, nur zur Info. Ich bin kein Fachmann in Sachen PC, Handy u.ä. Ich benutze aber mein Handy intensiv für diverse alltägliche Aufgaben, muß auch viel Daten u.a. auf der SD-Karte schreiben. Es war auch sehr praktisch ohne Kabel hin und her zu stöpseln über AirDroid Daten aufs Handy zu übertragen. Es ist auch äußert praktisch, wenn man seine Daten von PC aus in ein beliebiges Verzeichnis auf die SD-Karte übertragen kann (so wie man es halt auch PC so tut). Das hat auch seinen Sinn. Man sortiert seine Daten in diversen Verzeichnissen. Das ist überhaupt der Sinn warum man sich eine große SD-Karte besorgt. Die Geräte haben meistens so wie so nur 8 oder 16 GB, zum Teil vom Betriebsystem belegt. Auch 32 GB würde irgendwann schnell mal voll sein. Daß google diese Funktion gekappt hat (warum auch immer) finde ich äußerst belastend, ein Grund dem Android den Rücken zu kehren. Ich hatte ein neues Z1-Compact (gerade mal 2 Wochen alt). Ich updatete von 4.3 auf 4.4.2. Erst dann habe ich diese fehlende Funktion gemerkt. Ich verkaufte mein Gerät mit Verlust und kaufte mir ein Neues mit 4.3. Daran tue ich nicht mehr updaten. Recht bescheuert das von google.

Antworten

Empfohlene Artikel