webentwicklung-frage-antwort-db.com.de

getExternalStorageDirectory funktioniert nicht

Ich versuche, auf meinem Samsung Galaxy Nexus 4.2.2 eine Datei auf meiner SD-Karte zu speichern. Von meiner App verwende ich

Environment.getExternalStorageDirectory()

Aber es kehrt zurück

/storage/emulated/0/

In dem befindet sich nicht meine SD-Karteninformation. Gibt es eine Arbeitsmethode, mit der ich den richtigen Pfad zu meiner SD-Karte ermitteln kann?

44
Luke Pring

Eigentlich ist das der richtige Ort.

Ab Android 4,2) führte Google mehrere Benutzerkonten ein. Jeder Benutzer verfügt über einen eigenen externen Speicher, dessen Benutzer-ID im Pfad enthalten ist, um die Eindeutigkeit zu gewährleisten.

Die primäre (Standard-) Benutzer-ID ist 0. Sie erhalten also /storage/emulated/0/ als Pfad zum externen Speicher.

15
Raghav Sood

Ich habe gerade erfahren, dass dies die Art und Weise ist, wie Jelly Bean mit dem Mangel an Android.permission.WRITE_EXTERNAL_STORAGE - Berechtigungen umgeht. Ich habe ein solches Verhalten mit älteren Versionen von Android nicht gesehen.

Fügen Sie einfach diese Zeile zu Ihrer AndroidManifest.xml hinzu:

<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
9
ohaleck

Environment.getExternalStorageDirectory() bezieht sich auf alles, was der Gerätehersteller als "externen Speicher" ansieht. Ich kann etwas anderes als die SD-Karte sein.

Weitere Informationen erhalten Sie hier: Finden Sie einen externen Speicherort für die SD-Karte

5

Ich denke, es liegt an der Verwendung des Genymotion-Emulators, der Pfad ist wahr und in Eclipse ist er zu finden

File Explorer - > mnt - > Shell - > emulated -> 0 

ich hoffe es hilft ;)

1
farshad22

Ich hatte irgendwie meinen Symlink bei/storage/emulated/0 verloren, was einen ähnlichen Fehler verursachte. Ich habe die Kamera-App verwendet, um ein Bild aufzunehmen. Ich habe festgestellt, dass die Bilddetails besagten, dass es sich in/storage/emulated/0 befand, obwohl dieses Verzeichnis im Datei-Explorer nicht vorhanden war. Dann habe ich das Telefon neu gestartet. Nach dem Neustart bestand der Link.

0

Sicher? Wo denkst du ist deine SD-Karte montiert? Versuchen Sie es mit ls -l in diesem Verzeichnis - es ist wahrscheinlich ein Symlink zu /storage/emulated/0/.

0
thejh