Android之內置、外置SDCard
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;
- }
Android之內置、外置SDCard的更多相关文章
- Android获取内置sdcard跟外置sdcard路径
Android获取内置sdcard跟外置sdcard路径.(测试过两个手机,亲测可用) 1.先得到外置sdcard路径,这个接口是系统提供的标准接口. 2.得到上一级文件夹目录 3.得到该目录的所有文 ...
- Android-获取外置SDcard路径
Android手机支持SDcard.目前很多手机厂商把SDcard集成到手机中,当然有的手机同时也支持可插拔的SDcard.这就有了内置SDcard和位置SDcard之分.当手机同时支持内置和外置SD ...
- 关于华为x2中的外置SDCard的使用
一.前要 记录一下最近在开发生产过程中遇到的一个小问题.在使用x2的华为7寸平板时,由于需要大内存去录制视频,所以就使用X2自带的SDCard口,插入1个128G的SDCard卡.但是Android ...
- 第四章:Python基础の快速认识內置函数和操作实战
本課主題 內置函数介紹和操作实战 装饰器介紹和操作实战 本周作业 內置函数介紹和操作实战 返回Boolean值的內置函数 all( ): 接受一個可以被迭代的對象,如果函数裡所有為真,才會真:有一個是 ...
- android获取内置和外置SD卡路径 - z
本文将介绍Android真机环境下如何获取内置和外置SD卡路径. 测试环境:三星Note3,其他手机待测试... 所需权限(AndroidManifest.xml文件里) <uses-permi ...
- Android切换前后置摄像头并录制视频
项目需要对微信的视频模块也看了一下,在此就对这块进行了一个开发.首先给出效果图 首先给出java代码 /** * RecordActivity.java * 版权所有(C) 2013 * 创建:cui ...
- Android使用Linux mount获取SdCard存储文件夹
Android的智能手机各不同样.如今非常多Android智能手机都是自带存储,有的还带有扩展内存的Sdcard卡槽. 在Android开发中,非常多时候依据Android提供的获取SdCard存储方 ...
- android 怎样内置/预置/预编译文件(运行程序,应用程序,apk, jar, lib 等随意文件)到系统中
方法一: 如果要内置的软件名称为iperf.exe 1. 将iperf.exe放到Codebase的随意一个文件夹下(该文件夹必须可以在搜索Android.mk时被搜索到),比方system/ipe ...
- android中创建模拟器的 SDCard
在eclipse中安装了android环境后,可以直接创建AVD和sdcard的,windows->Android Virtual Device Manager,创建一个AVD时,可以同时创建s ...
随机推荐
- PostgreSQL在线安装
背景:CentOS 7 一.在线yum安装 yum -y install https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7 ...
- mysql ANSI_QUOTES 这个sql_mode的作用
首先sql_mode用于mysql的行为,sql_mode的多个值之间用','分隔: 1.平时sql_mode的值是多少? select @@session.sql_mode; +---------- ...
- Mybatis(六):spring与mybatis三种整合方法
1.采用MapperScannerConfigurer,它将会查找类路径下的映射器并自动将它们创建成MapperFactoryBean. spring-mybatis.xml: <?xml ve ...
- hdu 2066 一个人的旅行(dijkstra)
一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道
Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道 Keyword::截取文本文件后部分 查看提示max_allowed_packet限制 Target Se ...
- PCI-Express协议传输层读书笔记
http://www.doczj.com/doc/35cb19633169a4517723a3d9-9.html
- sqlzoo练习答案--SUM and COUNT
World Country Profile: Aggregate functions This tutorial is about aggregate functions such as COUNT, ...
- int、char、long各占多少字节数
Java基本类型占用的字节数:1字节: byte , boolean2字节: short , char4字节: int , float8字节: long , double 编码与中文:Unicode/ ...
- Swift 3.1 的一些新特性
Swift 3.1 的一些新特性 推荐序 本文来自泊学的投稿,介绍了 Swift 3.1 的新特性,感谢泊学授权发表.以下为文章正文. 正文 Apple 终于发布了Xcode 8.3以及Swift ...
- 【转】Elasticsearch5.0 安装问题集锦
Elasticsearch5.0 安装问题集锦 elasticsearch 5.0 安装过程中遇到了一些问题,通过查找资料几乎都解决掉了,这里简单记录一下 ,供以后查阅参考,也希望可以帮助遇到同样问题 ...