android 上层应用如何监听 sdcard的插拔事件

监听
Intent.ACTION_MEDIA_MOUNTED
Intent.ACTION_MEDIA_EJECT
Intent.ACTION_MEDIA_REMOVED

等这些代表 sdcard状态的几个action, 但是我的receiver 就是接收不到消息,不知道是为什么?

  1. private final BroadcastReceiver broadcastRec = new BroadcastReceiver()
  2. {
  3.   @Override
  4.   public void onReceive(Context context, Intent intent) {
  5.   if(intent.getAction().equals("android.intent.action.MEDIA_MOUNTED"))//SD
  6. 卡已经成功挂载
  7.   {
  8.   imagepath =
  9. android.os.Environment.getExternalStorageDirectory();//你的SD卡路径
  10.   }else
  11. if(intent.getAction().equals("android.intent.action.MEDIA_REMOVED")//各种未挂载状态
  12.   ||intent.getAction().equals("android.intent.action.ACTION_MEDIA_UNMOUNTED")
  13.   ||intent.getAction().equals("android.intent.action.ACTION_MEDIA_BAD_REMOVAL"))
  14.   {
  15.   imagepath = android.os.Environment.getDataDirectory();//你的本地路径
  16.   }
  17.   }
  18.   };
  19.   //在IntentFilter中选择你要监听的行为
  20.   IntentFilter intentFilter = new
  21. IntentFilter(Intent.ACTION_MEDIA_MOUNTED);
  22.   intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
  23.   intentFilter.addAction(Intent.ACTION_MEDIA_REMOVED);
  24.   //intentFilter.addAction(Intent.ACTION_MEDIA_SHARED);
  25.   intentFilter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL);
  26.   //intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_STARTED);
  27.   //intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);
  28.   intentFilter.addDataScheme("file");
  29.   registerReceiver(broadcastRec, intentFilter);//注册监听函数
  30.   unregisterReceiver(broadcastRec);//使用完注销广播监听函数
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值