2012-02-21 14 views
18

Sto creando un'applicazione che estrae i file (salvati dall'app Android) dalla sdcard del dispositivo tramite adb. Il problema è che i dispositivi diversi, hanno varie directory sdcardOttieni la directory sdcard di adb

cioè:

  • sdcard
  • sdcard/external_sd

Innanzi tutto inventato seguente soluzione:

  1. run adb shell
  2. ls
  3. Controlla se dir "sdcard" esiste
  4. Se sì run sdcard/ls e verificare se esiste external_sd
  5. valore di ritorno.

Ma il problema è che ho due dispositivi Samsung GT-I9100 e GT-I9000 ed entrambi hanno una directory sdcard/external_sd. Quando controllo System.getenv("EXTERNAL_STORAGE") restituisce sdcard e un altro sdcard/external_sd. Ho bisogno di tirare il file che è stato precedentemente salvato in System.getenv("EXTERNAL_STORAGE").

Quindi la domanda è: c'è qualche comando per ottenere la directory sdcard direttamente da adb, senza accedere al codice Android?

O forse posso iniziare l'attività con adb's am start e ottenere il valore di restituzione? È possibile?

EDIT: trovato la soluzione:

adb shell echo $EXTERNAL_STORAGE 
+0

si potrebbe voler sfuggire il $ – Blackbelt

+0

Quando sto usando 'adb shell echo $ EXTERNAL_STORAGE' sfugge automaticamente $. Quando lo faccio in questo modo: 1. 'adb shell' 2.'echo $ EXTERNAL_STORAGE' Devo terminarlo con' exit' per evitare il $ –

+0

Duplicato di http://android.stackexchange.com/q/14105/32571 – janot

risposta

24

Se io non ti ho frainteso, siete alla ricerca di qualcosa di simile:

[email protected]:~$ adb shell cd \$EXTERNAL_STORAGE 
[email protected]:~$ adb shell ls \$EXTERNAL_STORAGE 
[email protected]:~$ adb shell echo \$EXTERNAL_STORAGE 
+1

Trovato la soluzione "adb shell echo $ EXTERNAL_STORAGE" in base a il tuo commento, grazie. –

+0

siete i benvenuti – Blackbelt

0

è più opportuno utilizzare getExternalStorageDirectory() invece di System.getenv("EXTERNAL_STORAGE") Ciò fornirà una directory di archiviazione esterna indipendentemente dal dispositivo.

+1

indipendentemente dal dispositivo? Vuoi dire che System.getenv ("EXTERNAL_STORAGE") non può funzionare su alcuni dispositivi? –

+0

getExternalStorageDirectory() indica l'archiviazione di applicazioni esterne, non l'archiviazione di dispositivi esterni. Google sembra aver avuto un'era del design in cui la memoria del dispositivo espandibile è stata rimossa da Android. Lo stanno rimettendo, ma i risultati sono confusione. Post Lollipop, il montaggio di storage esterno (sdcard, usb, net drives, ecc.) Dovrebbe essere semplice. –

+0

Volevo accedere alla sdcard dallo script di shell, questa risposta mi ha aiutato molto. Non capisco perché la gente la stia votando ... –

15

Per quale valore - l'utilizzo della variabile $ EXTERNAL_STORAGE può fornire risultati fuorvianti. Qui ho un tablet HP Slate, che ha la variabile EXTERNAL_STORAGE impostata su/storage/sdcard0. Tuttavia quando si utilizza comando df (disk free) sul guscio, o anche il comando di montaggio per visualizzare lo spazio libero o supporti, il seguente diventa evidente:

[email protected]:/ $ df 
Filesystem    Size Used Free Blksize 
/dev     452.7M 36.0K 452.7M 4096 
/mnt/asec    452.7M 0.0 K 452.7M 4096 
/mnt/obb    452.7M 0.0 K 452.7M 4096 
/system    629.9M 468.5M 161.5M 4096 
/data     5.7 G 2.3 G 3.5 G 4096 
/cache    435.9M 16.4M 419.5M 4096 
/storage/sdcard0  5.7 G 2.3 G 3.5 G 4096 
/mnt/external_sd  29.3G 64.0K 29.3G 32768 

modo, la scheda SD esterna è infatti/mnt/external_sd , invece del valore EXTERNAL_STORAGE restituisce (che è la memoria interna)

+0

Questa dovrebbe essere la risposta. Grazie Giovanni! –

Problemi correlati