您的位置:首页 > 其它

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

2010-12-15 11:44 579 查看
监听
Intent.ACTION_MEDIA_MOUNTED
Intent.ACTION_MEDIA_EJECT
Intent.ACTION_MEDIA_REMOVED

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

private final BroadcastReceiver broadcastRec = new BroadcastReceiver()
{
  @Override
  public void onReceive(Context context, Intent intent) {
  if(intent.getAction().equals("android.intent.action.MEDIA_MOUNTED"))//SD
卡已经成功挂载
  {
  imagepath =
android.os.Environment.getExternalStorageDirectory();//你的SD卡路径
  }else
if(intent.getAction().equals("android.intent.action.MEDIA_REMOVED")//各种未挂载状态
  ||intent.getAction().equals("android.intent.action.ACTION_MEDIA_UNMOUNTED")
  ||intent.getAction().equals("android.intent.action.ACTION_MEDIA_BAD_REMOVAL"))
  {
  imagepath = android.os.Environment.getDataDirectory();//你的本地路径
  }
  }
  };
  //在IntentFilter中选择你要监听的行为
  IntentFilter intentFilter = new
IntentFilter(Intent.ACTION_MEDIA_MOUNTED);
  intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
  intentFilter.addAction(Intent.ACTION_MEDIA_REMOVED);
  //intentFilter.addAction(Intent.ACTION_MEDIA_SHARED);
  intentFilter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL);
  //intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_STARTED);
  //intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);
  intentFilter.addDataScheme("file");
  registerReceiver(broadcastRec, intentFilter);//注册监听函数
  unregisterReceiver(broadcastRec);//使用完注销广播监听函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  action file