Andorid手机从Type-C接口读取U盘数据

最近,公司的一个项目用到了一项比较新的技术,就是使用android手机,从Type-C接口读取Type-c接口的U盘数据。于是根据新的需求做了一系列的实验,其中遇到了不少的坑,于是记录如下:

1.首先,百度和google的许多资料中生成,可以利用Intent.ACTION_MEDIA_EJECT, Intent.ACTION_MEDIA_MOUNTED, Intent.ACTION_MEDIA_REMOVE, Intent.ACTION_MEDIA_UNMOUNTED 或类似的技术监听U盘插入拔出时间,并通过消息得到U盘的路径来进行操作。 通过实际测试,此类消息对U盘无效,得不到相关的消息,自然也无法的到路径。 这种方法,应该只是对扩展SD卡有效,而不是真正意义上的U盘,估计是作者概念错误,或者只是简单的从别人那里转来的。

2.其次,还有人提到,可以利用 Process proc = runtime.exec("mount");   命令得到android上挂在的各种设备,然后遍历所有的路径,找到U盘路径,再进行操作的。 实际测试发现,在android 6以上版本,此方法虽然可以得到U盘的挂在路径,但是使用这个路径,并不能进行文件的读写,任何直接对路径上进行的文件操作都会失败。至于更低版本的android系统中,是否能够实现,并没有实际测试。

3.通过阅读google官方提供的关于U盘操作的文档,发现,google提供了一套操作USB接口的API,但是并不能利用该API实现对文件的直接操作。据国外某些资料说,可以利用这些API,根据USB协议,自己实现在底层上对文件系统的操作。 这种方法估计工作量很大,因此并没有进行尝试,只是留作了备用方案,以防万一。

另外,有资料提到,可以利用Storage Access Framework来进行对U盘文件的读写。由于本人并非专业android开发人员,对此框架并不是很了解,所以只能尝试学写一下。但是就在搜索相关资料进行学习的时候,在GitHub上搜索到了一个开源的读取U盘文件的组件。于是,运行了这个开源组件提供的demo,果然可以正常读取U盘上的文件。

于是,按照利用这个开源的SDK完成了相关业务功能的开发。

此开源组件的地址如下:

https://github.com/magnusja/libaums


如果有哪位朋友遇到和我一样的问题,可以尝试使用该组件来满足需求。该组件提供简单的文档和demo程序,上手还算比较容易。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值