[英]Android External Storage vs. SD Card
閱讀有關存儲文件的Android文檔后,我看到外部存儲可以同時包含可移動sd卡和設備內部的存儲,即不可移動。 選擇將文件保存到外部存儲時,是否可以區分可移動存儲和不可移動存儲?
我認為您無法可靠地區分內部和外部(SD)存儲。
乍一看,您似乎可以使用Environment.isExternalStorageRemovable()
但這並不可靠,因為您的“主要外部”存儲設備很可能是設備的內部存儲器,而不是SD卡。
Environment.getExternalStorageDirectory()
的文檔指出:
注意:請勿在此處與“外部”一詞混淆。 最好將此目錄視為媒體/共享存儲。 它是一個文件系統,可以保存相對大量的數據,並且可以在所有應用程序之間共享(不強制執行權限)。 傳統上,這是SD卡,但也可以將其實現為設備中的內置存儲,該設備不同於受保護的內部存儲,並且可以作為文件系統安裝在計算機上。
例如,我的LG G4安裝了外部SD卡,可以通過adb( external_SD
)看到它:
$ adb shell ls -la /storage/
drwx------ root root 2015-02-28 01:10 USBstorage1
drwx------ root root 2015-02-28 01:10 USBstorage2
drwx------ root root 2015-02-28 01:10 USBstorage3
drwx------ root root 2015-02-28 01:10 USBstorage4
drwx------ root root 2015-02-28 01:10 USBstorage5
drwx------ root root 2015-02-28 01:10 USBstorage6
dr-xr-xr-x root root 2015-02-28 01:10 emulated
drwxrwx--x root sdcard_r 2015-07-31 08:19 external_SD
lrwxrwxrwx root root 2015-02-28 01:10 sdcard0 -> /storage/emulated/legacy
但是,用於外部存儲的各種API返回的值證明設備正在使用內部存儲器作為其“主要外部”存儲:
在沒有外部SD卡的仿真器上運行代碼將返回完全相同的結果。
因此,您不能假定/mnt/sdcard
表示物理SD卡。
您可能需要重新考慮實際要完成的工作,而不是嘗試檢測存儲類型。 :-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.