Android 关于外部存储设备挂载路径获取问题

本文记录了在Android中获取外部存储设备挂载路径的两种方法:监听广播和遍历挂载点。通过注册广播监听和使用StorageManager的反射调用来获取路径,但发现实际操作中存在设备差异和路径解析问题。
摘要由CSDN通过智能技术生成

参考文章:

http://blog.csdn.net/whminyi/article/details/51495942

http://blog.csdn.net/luckytzq/article/details/46828873

http://vjson.com/wordpress/%E8%8E%B7%E5%8F%96android%E8%AE%BE%E5%A4%87%E6%8C%82%E8%BD%BD%E7%9A%84%E6%89%80%E6%9C%89%E5%AD%98%E5%82%A8%E5%99%A8.html

 

最近遇到了需要获取外部存储设备挂载路径的问题,在这里记录一下学到的方法。

一、注册监听

1、如果是监听activity广播在其oncreate方法里要这样写

    IntentFilter iFilter = new IntentFilter();    
    iFilter.addAction(Intent.ACTION_MEDIA_EJECT);    
    iFilter.addDataScheme("file");    
    registerReceiver(mBroadcastReceiver , iFilter);  

2、如果是监听全局广播则要在mainfast文件中注册

    <receiver android:name=".activities.widget.UsbBroadCastReceiver">    
        <intent-filter android:priority="1000">    
            <action android:name="android.intent.action.MEDIA_MOUNTED"/>    
          <action android:name="android.intent.action.MEDIA_EJECT" />    
           <data android:scheme="file"/>    
       </intent-filter>    
    </receiver>  


特别注意mainfast中加上<data android:scheme="file"/>  或者代码注册时加上iFilter.addDataScheme("file"); 否则监听不到广播


对于获取USB路径,可以直接获取:

String path = intent.getData().getPath(); 

另有 intent.getDataString(); 的说法

(我是成功监听了的,但另有博文说这个监听监听不到,应该使用下面两个

android.hardware.usb.action.USB_DEVICE_ATTACHED  
android.hardware.usb.action.USB_DEVICE_DETACHED
,没有确认)

二、获取设备所有的挂载路径,并通过条件判断是否是所求路径

众所周知,谷歌提供给了我们获取Android内置存储卡的绝对路径的方法,但是如果要获取外置的存储的路径的话,谷歌就没有提供了。我们需要自己去写方法来获取这些路径,比如外置的tf卡,OTG挂载的U盘等。

那么采用什么方法呢,android说白了也就是一种Linux系统,采用的是linux的内核。而linux中挂载存储设备使用的是 mount 命令来挂载设备到文件系统中。如:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值