• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
supersugar
博客园    首页    新随笔    联系   管理    订阅  订阅
[原] Android中监听手机链接数据线USB大容量存储的广播

今天在项目中发现出现一个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.csdn.net/silenceburn/article/details/6083375  为什么加这句话的原因

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

posted on 2011-12-15 17:09  supersugar  阅读(3468)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3