android系統自從升級到2.3以后,多一個(gè)功能,可以判斷存儲卡是否是可以卸載的。Environment.isExternalStorageRemovable(),通過(guò)此方法我們可以知道手機上的存儲卡是手機自帶的還是外邊可插拔的SD卡,當然此種情況是指只有一個(gè)卡的情況。但是現在國內的大多數手機都支持雙存儲卡:1、即手機內置的有2G、4G或8G的內部存儲卡,默認安裝的應用與數據都會(huì )到這個(gè)卡中,用戶(hù)不買(mǎi)可插拔的SD卡,也可使用。2、手機的存儲空間畢竟有限,所以手機也支持外置的SD卡,或者叫TF卡、擴展卡等。那么這時(shí)候問(wèn)題就來(lái)了,在程序中我們如何可以判斷哪個(gè)路徑對應的是內置存儲卡,哪個(gè)對應的是外置存儲卡。有人說(shuō)用Environment.getExternalStorageDirectory()方法得到不就是SD卡嗎,這種方法明顯不適用的,尤其在4.0以后。恰恰相反,使用上面的方法得到的大多數是手機內部對應的SD卡(/mnt/sdcard 4.1系統以下,4.1直接變?yōu)?storage/sdcard0),下面我總結了一些較常見(jiàn)的外部SD卡的路徑:/mnt/sdcard2 /mnt/sdcard-ext /mnt/ext_sdcard /mnt/sdcard/SD_CARD/mnt/sdcard/extra_sd /mnt/extrasd_bind /mnt/sdcard/ext_sd/mnt/sdcard/external_SD /storage/sdcard1 /storage/extSdCard 如何直接取,而不是hardcode來(lái)定死呢,用這個(gè)方法getVolumePaths,通過(guò)反射機制得到路徑,然后判斷即可。一些路徑的標準寫(xiě)法
Environment.getDataDirectory() = /data
Environment.getDownloadCacheDirectory() = /cache
Environment.getExternalStorageDirectory() = /mnt/sdcard
Environment.getRootDirectory() = /system
context.getCacheDir() = /data/data/com.mt.mtpp/cache
context.getExternalCacheDir() = /mnt/sdcard/Android/data/com.mt.mtpp/cache
context.getFilesDir() = /data/data/com.mt.mtpp/files
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。