From:http://blog.csdn.net/u011290399/article/details/10363881

在项目中,发现通过Android提供的API获取外置SDCard的操作一直不能成功,一直没有太多的时间解决该问题

昨天週末,终于可以抽空研究了一下这个问题了

在网上搜索下,结果百度的搜索引擎怎麽搜索也未能给我满足需求的搜索结果

不过,搜索出的内置SDCard与外置SDCard互换操作给出了思路

先看看SDCard的路径:/storage/extSdCard、/storage/sdcard0、/storage/sdcard0/external-sdcard、/storage/external-sdcard等等路径

网络上给出的很多比较挫的方法:

1、通过Android的API获取其父路径的File对象,然后获得File对象内的文件路径字符串数组,遍历、寻找出外置SDCard路径,看上面给出的SDCard路径就发现不能完全实现

2、通过StorageManager类反射获得getVolumePaths的结果集,测试一部手机通过,不过没太多的保障

3、写死路径…… 尼玛,这个能是一个程序员说出的话,小爷当时看到都诅咒说出这句话的家伙

4、根据网上搜索出来外置、内置SDCard互换操作,想到是否可以读取vold.fstab文件,直接获得外置SDCard路径,结果发现好多手机上找不到vold.fstab文件……

虽然找不到vold.fstab文件,但是该文件内的信息还是存放在手机的内存中的,所以,方法就来了。

//    private static String cmd = "mount";private static String cmd = "cat /proc/mounts";private static String format = "sdcard";private static String sdCard = Environment.getExternalStorageDirectory().getAbsolutePath();

    /*** 獲取外置SDCard的絕對路徑* @return*/public static String getExternalPath() {BufferedReader read = null;String external_SDCard = sdCard;Runtime runtime = Runtime.getRuntime();try {Process process = runtime.exec(cmd);read = new BufferedReader(new InputStreamReader(process.getInputStream()));String line;while ((line = read.readLine()) != null) {
//                if (line.toLowerCase().contains(format) && line.contains(".android-secure")) {if (line.toLowerCase().contains(format)) {String[] array = line.split(" ");if (array != null && array.length >= 5) {String temp = array[1].replace("/.android_secure", "");if (!sdCard.equals(temp)) {external_SDCard = temp;}}}}} catch (Exception e) {external_SDCard = sdCard;e.printStackTrace();} finally {IOUtils.freeResource(read, null);}return external_SDCard;}

转载于:https://www.cnblogs.com/niray/p/4251309.html

Android之內置、外置SDCard相关推荐

  1. Android获取内置sdcard跟外置sdcard路径

    Android获取内置sdcard跟外置sdcard路径.(测试过两个手机,亲测可用) 1.先得到外置sdcard路径,这个接口是系统提供的标准接口. 2.得到上一级文件夹目录 3.得到该目录的所有文 ...

  2. android 获取sdcard 禁用sdcard,Android获取内置sdcard跟外置sdcard路径

    Android获取内置sdcard跟外置sdcard路径 Android获取内置sdcard跟外置sdcard路径.(测试过两个手机,亲测可用) 1.先得到外置sdcard路径,这个接口是系统提供的标 ...

  3. android sd卡挂载广播,Android--检测内置/外置SD卡存储卡,枚举所有挂载点(通过反射实现),监听SD卡广播...

    直接上重点: 1:获取内置SD卡的路径, 但是判断是否有效(是否挂载), 需要用到下面检测挂载点的方法 /** * 获取内置SD卡路径 * * @return */ public String get ...

  4. Android 8.0 中如何读取内部和外部存储以及外置SDcard

    最近碰到询问我这个读取SDcard的问题, 很久没有看这部分了,所以大致看了一下, 顺便记录一下.在Android 8.0上做了测试. 一般的Android App能读取的存储空间主要有三种: app ...

  5. android8.0 对于外置SDCARD的访问(MTK 平台)

    在android6.0 以上如果想访问外置SDCARD,需要再申请如下权限: <uses-permission android:name="android.permission.WRI ...

  6. 关于华为x2中的外置SDCard的使用

    一.前要 记录一下最近在开发生产过程中遇到的一个小问题.在使用x2的华为7寸平板时,由于需要大内存去录制视频,所以就使用X2自带的SDCard口,插入1个128G的SDCard卡.但是Android ...

  7. androidsdcard挂载目录_Android获取手机自带SDCard和外置SDCard路径

    获取内置SD卡很简单,就一行代码 /** * 获取内置SD卡路径 * @return */ public String getInnerSDCardPath() { return Environmen ...

  8. Android5.0后外置SDCard读写

    首先得明确一个概念:Android有获取外置SDCard路径的API,但是这个外置 SDCard的概念是指系统内部分出来的外置和我们插上的那张外置SDCard, 系统对于这两种SDCard是区分不出来 ...

  9. 三星 SAMSUNG GT-S7572 内置/外置SD替换方法

    三星 SAMSUNGGT-S7572 内置/外置SD替换方法 1.      需要先root手机,网上教程很多,如:360一键root工具等: 2.      三星官网下载S7572 rom,使用bo ...

最新文章

  1. Java导入导出CSV文件
  2. matlab数组存字符串,MATLAB字符串数组存储为CSV格式
  3. linux 装windows软件,常用软件的安装(windows/linux)
  4. 乒乓球比赛赛程_10月5日至10月11日中央电视台直播录播乒乓球比赛安排
  5. 【Flink】Flink状态的缩放(rescale)与键组(Key Group)设计
  6. Python——Eric的Python编程命名规则
  7. 层次分析法AHP及Python实现
  8. 地图制图基础(一):地图的分类
  9. 港股分时交易数据 API 接口
  10. 产业科技创新杂志产业科技创新杂志社产业科技创新编辑部2022年第3期目录
  11. python 支付宝支付 无效根证书_python支付宝支付示例详解
  12. WIN10找不到CMD命令提示符的简单解决办法
  13. illumina平台的测序接头
  14. 57期性能测试_0621
  15. Amy Palladino 加入 BCW,担任企业运作执行副总裁兼董事总经理
  16. 路由器android-267d3f,这才是真的高级货玩意:NETGEAR EX7700 AC2200三频无线Mesh扩展器使用体验...
  17. CTF 每日一题 Day24 世上无难事
  18. 【算法】25匹马,每次最多赛5匹,最少几次可以赛出前三名?
  19. 易飞ERP软件用户组及权限设定-易飞ERP免费教程 转载
  20. 351. 安卓系统手势解锁

热门文章

  1. variant php,Variant 是什么数据类型?
  2. linux进程的环境变量,LINUX系统学习一(进程、MMU,环境变量、getenv、fork、getpid/ge...
  3. html伪类选择器代码,CSS3中结构性伪类选择器—:first-of-type实现名言标签(代码实例 )...
  4. python日历提醒_如何通过python发送日历邮件(ics)
  5. python网页爬虫例子_Python 利用Python编写简单网络爬虫实例3
  6. 【ORACLE】20道Oracle运维常见面试题
  7. echart 时间滚动_基于 ECharts 封装甘特图并实现自动滚屏
  8. python智能办公系统_用 Python 自动化办公能做到哪些有趣或有用的事情?
  9. linux 跟踪链接 超时,Linux:跟踪netstat -s“连接尝试失败”的来源
  10. linux系统pycharm安装配置