2012-12-01 12 views
5

Sto sviluppando un'applicazione che richiede l'accesso diretto alla cartella radice della sdcard, tuttavia sembra in Android 4.2, la directory standard/sdcard ora punta a una sdcard "emulata" specifica per l'utente eseguire l'app. Questo non va bene, dato che la mia app richiede l'accesso a un file che è archiviato al livello più alto della sdcard. Qualcuno sa come accedere direttamente alla sdcard in Android 4.2?Accesso/sdcard in Android 4.2

+0

È una scheda SD rimovibile? Sui dispositivi 4.x che ho visto, non c'è davvero alcuna sdcard, solo un'emulazione di uno all'interno del volume di archiviazione interno, quindi l'obiettivo sarebbe privo di significato. Se c'è una carta fisica puoi guardare con il comando 'mount' della shell adb e vedere come viene gestita. –

+0

Sembra che tu stia fraintendendo. C'è sempre una partizione di/sdcard, anche se è virtuale. Ma con l'aggiornamento 4.2, la gestione di/sdcard è completamente diversa. L'accesso alla partizione sdcard (nel codice) non punta più alla * reale */sdcard, punta a una "partizione" virtuale della sdcard che è specifica per l'utente corrente. Ricorda che l'app che sto sviluppando funziona perfettamente con le versioni Android inferiori a 4.2, indipendentemente dal dispositivo. – Drew

+0

Vedi questo post di Koushik Dutta (lo sviluppatore di ROM Manager) dove si lamenta dello stesso problema. https://plus.google.com/103583939320326217147/posts/D7mZBjTJj5j – Drew

risposta

2

È possibile utilizzare la directory di archiviazione come tipo di file? (java.io.File)

Se è così, è possibile ottenere l'archiviazione esterna (carta Tipicamente SD, ma sarà memoria principale sui telefoni senza scheda SD) utilizzando il codice come questo nel metodo:

File path = Environment.getExternalStorageDirectory(); 

Inoltre, l'accesso all'archiviazione richiede l'autorizzazione READ_EXTERNAL_STORAGE nel tuo Android Manifest - con WRITE_EXTERNAL_STORAGE necessario se i dati vengono modificati. Qui ci sono queste autorizzazioni come apparirebbero nel manifesto:

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

Fonti:

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

+0

Questo è quello che utilizzo attualmente, ma il problema è che in Android 4.2 viene reindirizzato non alla radice effettiva della partizione/sdcard (ExternalStorageDirectory), ma a una posizione specifica dell'utente specifica nella partizione/sdcard (ExternalStorageDirectory). – Drew

+0

Aah, vedo ... scusa ho frainteso la tua domanda. – Alex6642122

1

Forse sto equivoco tua domanda, tuttavia, con il mio Nexus Galaxy in esecuzione Android 4.2.1 Posso accedere alla mia scheda SD utilizzando Environment.getExternalStorageDirectory(). La directory restituita è /storage/emulated/0, ma il contenuto è quello di /sdcard.

+0

Alcuni documenti sugli archivi, ma per 4.4 source.android.com/devices/tech/storage/config-example.html e doubleencore.com/2014/03/android-external-storage – pevik