[原] Android中监听手机链接数据线USB大容量存储的广播

本文介绍了如何在Android应用中正确监听大容量存储模式的广播,包括Intent.ACTION_UMS_CONNECTED和Intent.ACTION_UMS_DISCONNECTED等。文章还强调了在IntentFilter中设置filter.addDataScheme(file)的重要性。

今天在项目中发现出现一个bug:下载文件到SD卡时,如果连接数据线至PC,并且手机选择大容量存储模式的时候,软件就崩溃了。

修改很简单,在选择大容量存储模式,及离开的时候系统会发送一个广播来通知的,只要监听接收这个广播就行。

查阅资料之后,得知与之相关的action是:

  Intent.ACTION_UMS_CONNECTED;

  Intent.ACTION_UMS_DISCONNECTED;

查看常量的介绍:Apps should listen for ACTION_MEDIA_MOUNTED and ACTION_MEDIA_UNMOUNTED broadcasts to be notified when the SD card file system is mounted or unmounted。

就是说在广播接收器的IntentFilter中应该监听:

  Intent.ACTION_MEDIA_MOUNTED;

  Intent.ACTION_MEDIA_UNMOUNTED;

然后就开始写demo测试,可是换了N个手机都发现在onReceiver中并没有捕捉到这两个广播,百思不得其解,之后继续查资料,发现了缘由,原来在IntentFilter中还需要对filter设置一个参数:

  filter.addDataScheme("file");//重要的一句

  参考:http://www.eoeandroid.com/thread-29804-1-1.html

     http://blog.youkuaiyun.com/silenceburn/article/details/6083375  为什么加这句话的原因

然后重新测试,这次就可以正常的接收进入与退出大容量存储模式的广播了。

转载于:https://www.cnblogs.com/supersugar/archive/2011/12/15/2289153.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值