2011-06-01 26 views
9

當然,在我的代碼中,我使用Environment.getExternalStorageDirectory()而不是硬連線/ mnt/sdcard /。但我剛剛意識到,當我通過數據庫轉儲以交換格式從應用程序中導出數據時,文件路徑爲/ mnt/sdcard/...這可能會解釋我在用戶的日誌中看到的一些奇怪的錯誤。Android設備與Environment.getExternalStorageDirectory()!=/mnt/sdcard /?

我將在導入模塊中進行相應的更改。但我很好奇 - 任何Android設備> 1.6都有Environment.getExternalStorageDirectory()!=/mnt/sdcard /?

回答

2

不,我沒有看到任何設備與SD卡安裝到不同的位置。而且我已經使用了來自大多數流行廠商的超過10種不同的設備。

話雖如此,你不應該依賴這個事實。特別是如果你有這樣一個簡單的方法來獲得外部存儲的路徑。

+1

謝謝,這是我的想法。當然,我們應該使用安全的代碼,因爲任何供應商都可以隨時引入具有不同安裝點的設備。 – 2011-06-02 07:18:54

2

我有一個我的應用程序的用戶報告這一點,他使用的是Andy 2.2 IIRC,但我不記得他使用的是什麼設備。路徑可以使用

Environment.getExternalStorageDirectory().getPath() 

我想我的用戶得到了路徑爲/ SD卡&發現沒有到/ mnt/SD卡就像我的HTC手機一樣。

+1

通常'/ sdcard /'是'/ mnt/sdcard /'的鏈接(這是一個實際的掛載點,如果你從'adb shell'運行'mount'命令,你可以檢查) – inazaruk 2011-06-01 17:27:18

+0

那就是我想到,不記得爲什麼它沒有解決它。 – daveD 2011-06-01 17:32:29

7

實際上,一些設備的getExternalStorageDirectory()將返回本地化爲內部內存(內部SD卡)。可移動SD卡位於下面的安裝點,通常爲getExternalStorageDirectory()+"/sd"getExternalStorageDirectory()+"/external_sd"。不幸的是,這沒有標準,你不知道你指的是什麼樣的存儲。

+0

intersting - 你能說出一個設備和Android版本嗎? – SteelBytes 2012-06-04 04:40:03

+2

@steelbytes - 「/ mnt/sdcard/extStorages/SdCard」的Samsung Galaxy Tab,請參閱http://www.afternote.net/2012/03/sdcard-write-problem-fix-for-samsung.html – tomash 2012-06-04 08:23:49