Android获取拓展外置SD卡(可插拔)路径及读写外置SD卡的方法

有需求做一些类似文件管理器的,就会用到获取外置可移动SD卡的路径。一般的通过Environment或者Context获取的都是手机自带的存储卡路径,类似storage/emulated/0/加后缀。由于谷歌之后的意思是像ios一样,不支持外置USB或者外置可移动SD存储。但是国内的厂商一般都支持。先大概分个类,6.0以下的使用方法一,6.0以上的使用方法二。

方法一

1.遍历env的key里面有SECOENDARY_STORAGE这个值,代表是第二储存,即为外置可移动SD卡。EXTERNAL_STORAGE则对应的是手机内部的存储。在华为荣耀6(4.4)上测试的结果是: 外置 storage/sdcard1 , 内置 storage/emulated/0 。自测了一下,String inpath= System.getenv(“EXTERNAL_STORAGE”)获取内置sd卡,和系统的 Environment.getExternalStorageDirectory().getAbsolutePath()获取的结果是一样的

private static void initSDCardPath() {
        try {
            if(TextUtils.isEmpty(exterPath) && TextUtils.isEmpty(innerPath)){
                Map<String, String> map = System.getenv();
                Set<String> set = System.getenv().keySet();
                Iterator<String> keys = set.iterator();
                while (keys.hasNext()) {
                    String key = keys.next();
                    String value = map.get(key);
                    if ("SECONDARY_STORAGE".equals(key)) {
                        if(!TextUtils.isEmpty(value) && value.contains(":")){
                            exterPath = value.split(":")[0];
                        }else{
                            exterPath = value;
                        }
                    }
                    if ("EXTERNAL_STORAGE".equals(key)) {
                        innerPath = value;
                    }
                    if(!TextUtils.isEmpty(exterPath) && !TextUtils.isEmpty(innerPath)){
                        break;
                    }
                }
                LogUtil.i("file browser", "exterPath= "&#
  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值