就目前市場上的手機有很多,我們需要儲存路徑到內建卡,或者外接sd卡(也是在手機內部),或者外接sd卡(使用者自己插的卡,比如tf卡)等,但是手機廠商太多,這些儲存路徑也有太多,我們怎麼去區分呢,網上也有很多資料的解釋,但是都是很亂,不夠唯我所用,今天準備花點時間把這塊了解一下;
從android4.1開始,谷歌做了一次調整,具體調整的路徑咱們不去管它,因為手機廠商還是會改變這個路徑。能解決的就是我們通過乙個程式獲取每個使用者的儲存路徑,根據每個人的不同路徑進行儲存,谷歌給我們提供了這麼乙個方法,具體程式偽**如下:
privatestoragemanagermstoragemanager;privatemethodmmethodgetpaths;
mstoragemanager= (storagemanager)this.getsystemservice(this.storage_service);trycatch(nosuchmethodexception e)
pathss= getvolumepaths();
for(inti=0;i<pathss.length;i++)
publicstring getvolumepaths()catch(illegalargumentexception e)catch(illegalacces***ception e)catch(invocationtargetexception e)上面的方法返回的是手機儲存的儲存器列表,我目前測試用的手機的結果是:returnpaths;
}
可見我的手機是有內建卡和外接sd卡,如果使用者插入了外接sd卡的話,也會列印出來的。所以如果我們的需求是儲存在內建卡或者sd卡就可以根據返回的字串陣列取得值就ok了。
另外我們有時候會用 public static final string sd_path2 = environment .getexternalstoragedirectory().getpath();
public static final string sd_path = environment.getexternalstoragedirectory().getabsolutepath();方法得到儲存路徑,首先說這兩個方法得到的結果是一樣的,通過看原始碼他也是通過上面的方法得到的,只不過它取得是陣列中的第乙個值,個人覺得,如果有需求要區分是儲存在外置sd卡還是內建卡,我們用第一種方法, 如果沒有直接用上面那兩個方法其中乙個就行了。
如果需求有讓我們對儲存的檔案進行分類,讓使用者可以很快找到所需的檔案,谷歌也給我提供了幾個常量,我把這些常量儲存在乙個字元陣列裡面:
privatestringss= ;引數的意思:
怎麼用呢:下面
string aaaaa = environment.getexternalstoragepublicdirectory(ss[1]).getabsolutepath();得到的aaaaa就是: ---aaaaa:---/storage/emulated/0/dcim
如果你還需要得到儲存卡的大小:
public voidgetsdsixe()上面的是扇區的大小。
獲取sd卡路徑
0 獲取sd卡路徑。1 講述 environment 類。2 講述 statfs 類。3 完整例子讀取 sdcard 記憶體 0 獲取sd卡路徑 方法一 private string folder sdcard dcim camera sd卡上拍照程式的儲存路徑 寫死絕對路徑,不贊成使用 方法二 p...
關於android獲取sd卡路徑的方法
專案中使用到了離線資料,資料庫可能比較大,平板本身容量有限,就想到了資料儲存到sd卡上。由於android裝置五花八門,sdk裡面也沒有給出明確的獲取sd卡的方法,自己網上找了個,測試三星平板目前沒問題,方法如下 獲取sd卡路徑 param mcontext param is removale re...
adb找不到sd卡的儲存路徑
當我們使用adb shell 進入android命令列去查詢sd卡 內部儲存 的路徑時,有可能找不到sdcard這個目錄,然後在 storage emulated 目錄下也找不到。adb shell ls la storage emulated 0 storage emulated 0 no suc...