多张SD卡,进行读取

/**
* 获取SD根目录,如果没有内存卡返回""值,如果有内存卡
* 由于可能有多张SD卡,首先判断APPRoot文件夹是否存在该SD卡上面,如果有就取这张SD卡;
* 如果没有APPRoot文件夹,就判断哪张SD剩余容量多,选择多的那张内存卡
* @return SD卡路径
*/
public String getSDPath() {
StorageManager sm = (StorageManager) this.getSystemService(Context.STORAGE_SERVICE);
try {
String[] paths = (String[]) sm.getClass().getMethod("getVolumePaths", null).invoke(sm, null);
long maxFreeSize = 0;
int index = 0;
if(paths.length > 0){
for(int i=0; i < paths.length; i++){
File file = new File(paths[i] + APPRoot);
if(file.exists()){
return (paths[i]);
}
}
for(int i = 0; i < paths.length; i++){
StatFs statfs = new StatFs(paths[i]);
long size = statfs.getBlockSize();
long freeSize = statfs.getAvailableBlocks()*size;
if(freeSize > maxFreeSize){
maxFreeSize = freeSize;
index = i;
}
}
return paths[index];
}else{
return "";
}
} catch (IllegalArgumentException e) {
return "";
} catch (IllegalAccessException e) {
return "";
} catch (InvocationTargetException e) {
return "";
} catch (NoSuchMethodException e) {
return "";
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值