In esecuzione su un Nexus 4, quando chiamo getExternalCacheDir().getAbsolutePath()
ottengo come percorso /storage/emulated/0/Android/Data/com.example.myapp/cache
. Il problema è che, come indicato in diversi punti, /storage/emulated/0
genera un errore "nessun file o directory"./storage/emulato/0 ottenuto da getExternalCacheDir() genera l'errore "nessun file o directory"
Quello che mi aspetto di ottenere è qualcosa come /storage/emulated/legacy
, poiché ottengo correttamente la query sulla variabile di ambiente EXTERNAL_STORAGE
con comandi come System.getenv("EXTERNAL_STORAGE")
.
mi basta usare un if per controllare e correggere il percorso nel caso si punterà a qualcosa di diverso da quello che ottengo con getenv
, ma voglio capire perché getExternalCacheDir()
restituisce un percorso non valido, o se tale funzione è stata in qualche modo deprecato.
Note aggiuntive: Su Xperia U in esecuzione CM11 funziona correttamente; destinati a Nexus 4 con adb
ottengo
ls /storage/emulated/0
/storage/emulated/0: No such file or directory
Sono autorizzazioni di accesso appropriate, dal momento che se io chiamo, per esempio, echo "hi!" >> /storage/emulated/legacy/Android/Data/com.example.myapp/cache
non ho indizi, mentre chiama echo "hi!" >> /storage/emulated/0/Android/Data/com.example.myapp/cache
risultati in errori. Quest'ultimo è quello che ottengo da getExternalCacheDir
.
Sono interessato a utilizzare quel percorso con i comandi della shell, non solo con le funzioni dell'API di Android.
Sì, hai ragione, se usato con 'nuovo file (getExternalCacheDir()," tempDir ");' funziona come un fascino! Il problema è che ho bisogno di usare il percorso con un comando di shell (es. 'Ls'), quindi ho bisogno di ottenere un absolutePath che è considerato valido dal sistema operativo e non solo dall'API di Android – kalup
Si prega di assicurarsi che entrambi 2 condizioni dichiarate nella risposta: 'MEDIA_MOUNTED.equals (Environment.getExternalStorageState()' e 'context.checkCallingOrSelfPermission (" android.permission.WRITE_EXTERNAL_STORAGE ") == PackageManager.PERMISSION_GRANTED' sono entrambi veri per il tuo caso con' .../emulated/0/... 'percorso – kiruwka