2012-02-21 63 views
18

我正在製作一個應用程序,它通過adb從設備sdcard中提取文件(由android應用程序保存)。 的問題是不同的設備,具有各種的SD卡目錄由adb獲取sdcard目錄

即:

  • SD卡
  • SD卡/ external_sd

首先我發明以下溶液:

  1. 運行adb shell
  2. 個LS
  3. 檢查目錄「SD卡」的存在
  4. 如果是運行SD卡/ LS,並檢查是否存在external_sd
  5. 返回值。

但問題是,我有兩個三星設備GT-I9100GT-I9000兩者有一個目錄sdcard/external_sd。當我檢查System.getenv("EXTERNAL_STORAGE")時,返回sdcard和另一個sdcard/external_sd。我需要提取以前保存到System.getenv("EXTERNAL_STORAGE")的文件。

所以問題是:有沒有任何命令直接從adb獲得sdcard目錄 ,而無需訪問Android代碼?

或者也許我可以開始與adb的活動開始,並獲得返回 值?這可能嗎?

編輯: 找到了解決辦法:

adb shell echo $EXTERNAL_STORAGE 
+0

您可能想要轉義$ – Blackbelt 2012-02-21 10:26:24

+0

當我使用'adb shell echo $ EXTERNAL_STORAGE'時,它會自動轉義$。 當我這樣做的時候: 1.'adb shell' 2。'echo $ EXTERNAL_STORAGE' 我必須用'exit'結束才能跳過$ – 2012-02-21 10:59:01

+0

複製http://android.stackexchange.com/q/14105/32571 – janot 2014-10-04 06:35:29

回答

24

如果我沒有誤會你,你正在尋找的東西,如:

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

找到解決方案「adb shell echo $ EXTERNAL_STORAGE」基於您的評論,謝謝。 – 2012-02-21 09:52:15

+0

不管設備如何,歡迎您致電 – Blackbelt 2012-02-21 09:56:02

0

其更好地使用getExternalStorageDirectory()代替System.getenv("EXTERNAL_STORAGE")這將爲您提供外部存儲目錄,而不考慮設備。

+1

? 你的意思是System.getenv(「EXTERNAL_STORAGE」)不能在某些設備上工作? – 2012-02-21 09:48:55

+0

getExternalStorageDirectory()意味着外部應用程序存儲,而不是外部設備存儲。 Google似乎已經有了一個設計時代,從Android中刪除了可擴展設備內存。他們正在放棄,但結果是一團糟。後棒棒糖,安裝外部存儲(SD卡,USB,網絡驅動器等)應該是直接前進。 – 2015-03-24 23:18:45

+0

我想從shell腳本訪問SD卡,這個答案幫了我很多。我不明白爲什麼人們投票下來... – 2016-04-17 11:02:38

15

它的價值 - 使用$ EXTERNAL_STORAGE變量會給你帶來誤導性的結果。 我有一個HP Slate平板電腦,其中EXTERNAL_STORAGE變量設置爲/ storage/sdcard0。 然而,使用DF時(磁盤免費)命令上殼,或甚至在安裝命令來顯示自由空間或安裝件,以下變得明顯:

[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 

所以,外部的SD卡是實際上的/ mnt/external_sd ,而不是值EXTERNAL_STORAGE返回(這是內部存儲)

+0

這應該是答案。謝謝約翰! – 2016-06-28 00:03:47