2012-12-01 3 views
5

Ich entwickle eine App, die direkten Zugriff auf den Stammordner der SD-Karte benötigt, aber es scheint in Android 4.2, das Standard/SDCard-Verzeichnis zeigt jetzt eine "emulierte" SD-Karte für den Benutzer Ausführen der App Das ist nicht gut, da meine App Zugriff auf eine Datei benötigt, die auf der obersten Ebene der SD-Karte gespeichert ist. Kann jemand direkt auf die SD-Karte in Android 4.2 zugreifen?Zugriff/sdcard in Android 4.2

+0

Ist dies eine tatsächliche entfernbare SD-Karte? Auf den 4.x-Geräten, die ich gesehen habe, gibt es wirklich keine SD-Karte, nur eine Emulation von einem innerhalb des internen Speichervolumens, so dass das Ziel bedeutungslos wäre. Wenn es eine physische Karte gibt, könntest du mit dem Befehl 'mount' der adb-Shell nachsehen, wie sie gehandhabt wird. –

+0

Sie scheinen ein Missverständnis zu sein. Es gibt immer eine/sdcard-Partition, auch wenn sie virtuell ist. Aber mit dem 4.2 Update ist die Handhabung von/sdcard völlig anders. Zugriff auf die SD-Karte Partition (in Code) zeigt nicht mehr auf die * real */SD-Karte, es verweist Sie auf eine virtuelle "Partition" der SD-Karte, die spezifisch für den aktuellen Benutzer ist. Beachten Sie, dass die App, die ich entwickle, bei Android-Versionen unter 4.2 problemlos funktioniert, unabhängig vom Gerät. – Drew

+0

Sehen Sie diesen Beitrag von Koushik Dutta (dem Entwickler von ROM Manager), wo er sich über das gleiche Problem beschwert. https://plus.google.com/103583939320326217147/posts/D7mZBjTJj5j – Drew

Antwort

2

Können Sie das Speicherverzeichnis als Dateityp verwenden? (java.io.File)

Wenn ja, können Sie den externen Speicher erhalten (In der Regel SD-Karte, werden aber Hauptspeicher sein auf Handys ohne SD-Karte) mithilfe von Code wie dies in Ihrer Methode:

File path = Environment.getExternalStorageDirectory(); 

Zusätzlich benötigt der Speicherzugriff READ_EXTERNAL_STORAGE Erlaubnis in Ihrem Android Manifest - mit WRITE_EXTERNAL_STORAGE wird benötigt, wenn irgendwelche Daten geändert werden. Hier sind diese Berechtigungen, wie sie im Manifest erscheinen würden:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

Quellen:

http://developer.android.com/reference/android/os/Environment.html http://developer.android.com/reference/android/Manifest.permission.html

+0

Das ist, was ich derzeit verwende, aber das Problem ist, dass in Android 4.2 es nicht zum eigentlichen Stamm der/sdcard (ExternalStorageDirectory) Partition, sondern zu einem speziellen benutzerspezifischen Speicherort auf der/sdcard (ExternalStorageDirectory) Partition umgeleitet wird. – Drew

+0

Aah, ich verstehe - Entschuldigung, ich habe deine Frage missverstanden. – Alex6642122

1

Vielleicht bin ich Missverständnis Ihre Frage, aber mit meinem Galaxy Nexus mit Android 4.2.1 Ich kann mit Environment.getExternalStorageDirectory() auf meine SD-Karte zugreifen. Das zurückgegebene Verzeichnis ist /storage/emulated/0, aber der Inhalt ist der von /sdcard.

+0

Es gibt einige Dokumente über Speicher, aber für 4.4 source.android.com/devices/tech/storage/config-example.html und doubleencore.com/2014/03/android-external-storage – pevik