android u盘加载_如何获取Android系统挂载U盘的路径
最近项目开发中碰到这样一个需求:用户在定制的 Android 设备上插入 U 盘,然后在应用内导入 U 盘里的文件内容。
问题在于如何获取 U 盘的路径,网上搜索后大多数都是采用广播监听的方式来获取 U 盘的路径。但是如果 U 盘在设备开机之前就插着,这样登录应用后就获取不到 U 盘的路径了,于是乎此种方法作罢。
这时候同事告诉了另外一种方法,就是从文件中读取路径。
U 盘在插入系统后,如果系统检测到 U盘,便会在系统的 proc 目录的 mounts 文件内产生一条记录。
可以看到该文件记录了 U 盘每一次插入的相关信息(看不清楚?好吧,我摘取其中的一条用日志打印出来如下)。
很长的一条信息,可能你看不懂(其实我也看不懂),没关系,找到对自己有用的信息即可。是不是发现了 /mnt/sdaq/sdaq1 这样一条信息,没错,他就是我们需要的 U 盘挂载的路径。我们只需要把 /proc/mounts 文件内的带 vfat 的最后一行找到,截取其中的 U 盘路径即可。代码如下:
private void searchPath() {
String filePath = "/proc/mounts";
File file = new File(filePath);
List lineList = new ArrayList<>();
InputStream inputStream =null;
try {
inputStream = new FileInputStream(file);
if (inputStream != null) {
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "GBK");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line = "";
while ((line = bufferedReader.readLine()) != null) {
if (line.contains("vfat")) {
lineList.add(line);
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
String editPath = lineList.get(lineList.size() - 1);
int start = editPath.indexOf("/mnt");
int end = editPath.indexOf(" vfat");
String path = editPath.substring(start, end);
Log.d("SelectBusLineDialog", "path: " + path);
}
最后,可能有小伙伴会问「既然是定制的 Android 设备,第一次插入的时候不是知道了 U 盘的路径了吗,只要以后写死这个路径不就好了吗」。好吧,其实当时我也是这么想的,但是实际上每次插拔 U 盘,路径是不断变化的,而且仔细看上面那张大图可以发现每条记录的 U 盘挂载路径都是不同的,这也是不能写死路径的原因。(PS:十分感谢同事「开志哥」在项目中给予的帮助)
更多文章欢迎访问:我的博客
android u盘加载_如何获取Android系统挂载U盘的路径相关推荐
- Android使用Glide加载Gif慢 获取gif时间
1,解决Glide加载Gif非常慢问题 Glide.with(MainActivity.this).load(url).asGif().diskCacheStrategy(DiskCacheStrat ...
- android登陆加载加载_如何在Android上侧面加载应用
android登陆加载加载 Just because an app isn't available from the Google Play Store doesn't mean it's not a ...
- 服务器怎么用u盘加载硬盘驱动,戴尔服务器安装用U盘加载硬盘控制卡驱动.pdf
戴尔服务器安装用U盘加载硬盘控制卡驱动 支持9G,10G,11G 安装windows2003,并且2003 最好带SP2 补丁,不然可能出现蓝屏死机等现象.8G 暂时没有测 试. 使用该软件后,U 盘 ...
- android listview动态加载网络图片不显示,Android Listview异步动态加载网络图片
Android Listview异步动态加载网络图片 详见: http://blog.sina.com.cn/s/blog_62186b460100zsvb.html 标签: Android SDK ...
- android listview自动加载更多,如何实现 Android ListView『上拉加载更多』?
ListView上拉加载更多的UI需求 (1)向上滑动 ListView,当最后一个条目滚入屏幕时开始加载更多条目,在列表底部增加一个 footerView:一个 infinite progressB ...
- linux u盘加载阵列卡驱动步骤,Linux操作系统U盘加载阵列卡驱动步骤.doc
思路 如果没有Linux的机器,可以使用安装光盘的Linux环境:将盘完全格式化,将驱动拷贝到U盘,将U盘插在服务器上,用Linux安装光盘第一张启动到图形安装界面,按Ctrl+Alt+F2切换到控制 ...
- Android横竖屏加载不同的XML,Android横竖屏切换View设置不同尺寸或等比例缩放的XML解决方案...
在一些应用中,涉及到横竖屏切换,View要切换成不同大小比例尺寸.为解决这种开发场景,有多种解决方案,比如可以重写View,实现横竖切换在onMesure或者此类View的回调方法里面重新测量重新绘制 ...
- android 涨潮动画加载_潮汐app下载 潮汐 (睡眠白噪音番茄钟) for Android V3.9.1 安卓手机版 下载-脚本之家...
潮汐app是一款适用于安卓手机端的睡眠.专注与冥想的白噪音番茄钟应用,帮助你从快节奏的当下抽离,进入另一个平和安静的时空,里面提供各种自然声音任你选择,让你的身心回归自然,冥想更自在,还能帮你检测一晚 ...
- android 涨潮动画加载_潮汐app怎么使用?潮汐app各功能测评介绍
拖延症可能是一种绝症,原因是你每次下定决心后,往往草草了事.总是会有各种诱惑还有鸡毛蒜皮的事来打断你. 碎片时间应该变成块状时间,于是手机里有了番茄工作法相关的应用. 第 274 期豌豆荚设计奖,我们 ...
- Android Glide图片加载框架(三)缓存机制
文章目录 一.缓存简介 二.缓存用法 内存缓存方式 磁盘缓存方式 三.缓存KEY 四.内存缓存 内存缓存流程 五.磁盘缓存 磁盘缓存流程 Android Glide图片加载框架系列文章 Android ...
最新文章
- shell脚本学习之参数传递
- 重拾IP路由选择:CCNA学习指南中的IP路由选择
- 在几何画板中如何制作圆柱的侧面展开动画_倒计时与时钟演示 | 几何画板
- python的convert_python编程开发之类型转换convert实例分析
- 金融时序预测中的深度学习方法综述!
- 【软件解决】 解决 TortoiseSVN 图标不显示问题
- android 常用代码
- div内文本(text)居中对齐
- C#创建一个文本文件简单代码
- 2022年第十二届MathorCup高校数学建模挑战赛
- mysql查询同时选修了两门_查找同时选修了C01及C02两门课程的学生姓名及学号
- Html提交表单的制作
- List.sort()方法使用拉姆达表达式进行排序的一个例子
- 全面提高你的搜索技巧
- python沙盒逃逸
- 运维(32) Prometheus+Grafana监控SpringBoot
- SLG游戏中大地图实现使用四叉树技术
- 4、公司融资 - 开公司创业系列文章
- 计算机 路由器教案,路由器培训教材
- Android获取联系人权限
热门文章
- Python 网页爬虫
- 2020-10-18
- 181223每日一句
- Atitit Java制作VCARD vcf 以上就是关于vCard的基本介绍,维基百科(英文)https://en.wikipedia.org/wiki/VCard写的比较全,可惜我看不懂。
- Atitit webservice的发现机制 discover机制
- org.xml.sax.SAXParseException: 缺少文件根组件。
- API网关的几点思考
- mysql的dml全程是_MySQL中的DML、DDL、DCL到底是什么呢?
- 【优化算法】混沌游戏优化 (CGO)【含Matlab源码 1010期】
- 【风速预测】基于matlab EMD+模拟退火算法优化DBN风速预测【含Matlab源码 JQ003期】