[摘]Android SD卡挂载状态

Android  2018年7月12日 pm8:06发布6年前 (2018)更新 91es.com站长
96 0 0

一、 Sd卡挂载主要ACTION

ACTION_MEDIA_BAD_REMOVAL

sd卡已经从sd卡插槽拔出,但是挂载点还没解除

ACTION_MEDIA_BUTTON

“媒体”按钮被按下

ACTION_MEDIA_CHECKING

存在外部媒体,磁盘检查挂载点的路径中包含的检查媒体意图

ACTION_MEDIA_EJECT

用户移除外部存储媒体

ACTION_MEDIA_MOUNTED

Sd卡被插入,且已经挂载

ACTION_MEDIA_NOFS

外部媒体存在,而是使用一个不兼容的fs(或者是空白)挂载点的路径中包含的检查媒体意图

ACTION_MEDIA_REMOVED

Sd卡被移除

ACTION_MEDIA_SCANNER_FINISHED

扫描完成

ACTION_MEDIA_SCANNER_STARTED

开始扫描

ACTION_MEDIA_SCANNER_SCAN_FILE

请求媒体扫描仪扫描一个文件,并将它添加到媒体数据库

ACTION_MEDIA_SHARED

Sd卡作为USB大容量存储被共享,挂载被解除

ACTION_MEDIA_UNMOUNTABLE

ACTION_MEDIA_UNMOUNTED

Sd卡存在,但还没有挂载

二、 热插拔sd卡

1. 直接拔掉sdcard

BroadcastReceiver.android.intent.action.MEDIA_UNMOUNTED

BroadcastReceiver.android.intent.action.MEDIA_BAD_REMOVAL

BroadcastReceiver.android.intent.action.MEDIA_EJECT

BroadcastReceiver.android.intent.action.MEDIA_SCANNER_STARTED

BroadcastReceiver.android.intent.action.MEDIA_SCANNER_FINISHED

2. 再次插入sd卡

BroadcastReceiver.android.intent.action.MEDIA_CHECKING

BroadcastReceiver.android.intent.action.MEDIA_MOUNTED

BroadcastReceiver.android.intent.action.MEDIA_SCANNER_STARTED

BroadcastReceiver.android.intent.action.MEDIA_SCANNER_FINISHED

3. 在通知栏卸载sdcard

BroadcastReceiver.android.intent.action.MEDIA_EJECT

BroadcastReceiver.android.intent.action.MEDIA_UNMOUNTED

注意:接收到 ACTION_MEDIA_EJECT 广播之后,sd 卡还是可以读写的,

直到接收到 ACTION_MEDIA_REMOVED、ACTION_MEDIA_UNMOUNTED等广播之后,sd 卡才不可以读写。

三、广播注册代码片段

		// 注册广播
		IntentFilter intentFilter = new IntentFilter();
		intentFilter.addAction(Intent.ACTION_MEDIA_EJECT); // 用户移除外部存储媒体
		intentFilter.addAction(Intent.ACTION_MEDIA_REMOVED); // Sd卡被移除
		intentFilter.addAction(Intent.ACTION_MEDIA_MOUNTED);// Sd卡被插入,且已经挂载
		intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);// Sd卡存在,但还没有挂载
		intentFilter.addAction(Intent.ACTION_MEDIA_CHECKING);// 存在外部媒体,磁盘检查挂载点的路径中包含的检查媒体意图
		intentFilter.addAction(Intent.ACTION_MEDIA_NOFS);// 外部媒体存在,而是使用一个不兼容的fs(或者是空白)挂载点的路径中包含的检查媒体意图
		intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_STARTED);// 开始扫描
		intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);// 请求媒体扫描仪扫描一个文件,并将它添加到媒体数据库
		intentFilter.addAction(Intent.ACTION_MEDIA_SHARED);// Sd卡作为USB大容量存储被共享,挂载被解除
		intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTABLE);
		intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);// 扫描完成
		intentFilter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL);// sd卡已经从sd卡插槽拔出,但是挂载点还没解除
		intentFilter.addDataScheme("file");
		registerReceiver(sdBroadcast, intentFilter);

本文大部分摘于《Android SD卡挂载状态》,感谢源作者分享。

 历史上的今天

  1. 2024: MediaMetadataRetriever解析媒体文件元数据(0条评论)
  2. 2024: 记录Ubuntu更新命令(0条评论)
  3. 2023: MediaPlayer JNI层介绍(0条评论)
  4. 2021: SharedPreferences最后一次写入时断电偶尔存在不保存问题(0条评论)
  5. 2021: 付志勇:故乡(0条评论)
版权声明 1、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站内容: 部分来源于网络,仅供学习和参考,若侵权请留言
3、 本站申明: 个人流水账日记,内容并不保证有效

暂无评论

暂无评论...

随机推荐

Android图片旋转+倒影

前言根据前面两篇文章,这里进行组合也就是倒影+旋转,顺便加上了倒影渐变。效果如图。正文直接上代码<!-- layout_height= 倒影高度+分割线高度+图片高度,否则显示不全 -->​<com.biumall.reflectview.view.Rotat...

Android 6.0 Settings源码简单分析之蓝牙(2)

上一篇《Android 6.0 Settings源码简单分析之蓝牙(1)》我们只是简单的介绍了蓝牙的界面和流程的启动,讲得比较粗糙,这次我们继续深入讨论蓝牙,设计Framework的代码源码:Android 6.0应用:Settings 和 Framework(权且看做一个应用吧^_^...

胡适:人生问题

1903年,我只有十二岁,那年12月17日,有美国的莱特弟兄作第一次飞机试验,用很简单的机器试验成功,因此美国定12月17日为飞行节。12月17日正是我的生日,我觉得我同飞行有前世因缘。我在前十多年,曾在广西飞行过十二天,那时我作了一首《飞行小赞》,这算是关于飞行的很早的一首辞。诸位飞过大西洋、太...

Android动画之RotateAnimation

Android动画View Animation 视图动画(Tween Animation 补间动画),只能用来设置View的动画Drawable Animation 帧动画(Frame动画),一帧帧地显示资源文件中的DrawableProperty Animation 属性动画,在andr...

HandlerThread的使用

HandlerThread简介HandlerThread是一个Android已封装好的轻量级的异步类。HandlerThread 继承Thread,本质就是个Thread,与普通Thread 的区别在于实现了自己的Looper,可以单独分发和处理消息。作用:用来线程间的消息传递,主要是子线...

纪伯伦:我曾有七次鄙视自己的灵魂

我曾有七次鄙视自己的灵魂:第一次是看见她为了上升而故作谦卑时。第二次是看见她在瘸者面前跛行时。第三次是让她在难易之间做选择,她选择了易时。第四次是她犯了错,却自我安慰说别人也犯同样的错时。第五次是她容忍了软弱,还将这容忍视作坚强时。第六次是她鄙弃一张难看的面孔,...