对SD卡状态监听,到现在为止我知道的有两种方式:

1.注册StorageEventListener来监听sd卡状态

StorageEventListener中有onStorageStateChanged()方法,当sd卡状态改变时,此方法会调用,对各状态的判断一般会用到Environment类,此类中包含的有关sd卡状态的常量有:

MEDIA_BAD_REMOVAL:表明SDCard 被卸载前己被移除

MEDIA_CHECKING:表明对象正在磁盘检查

MEDIA_MOUNTED:表明sd对象是存在并具有读/写权限

MEDIA_MOUNTED_READ_ONLY:表明对象权限为只读

MEDIA_NOFS:表明对象为空白或正在使用不受支持的文件系统

MEDIA_REMOVED:如果不存在 SDCard 返回

MEDIA_SHARED:如果 SDCard 未安装 ,并通过 USB 大容量存储共享 返回

MEDIA_UNMOUNTABLE:返回 SDCard 不可被安装 如果 SDCard 是存在但不可以被安装

MEDIA_UNMOUNTED:返回 SDCard 已卸掉如果 SDCard 是存在但是没有被安装

如:

  1. public void onStorageStateChanged(String path, String oldState, String newState) {
  2. if (newState.equals(Environment.MEDIA_SHARED)) {
  3. //大容量存储时相关操作
  4. } else if (newState.equals(Environment.MEDIA_CHECKING)) {
  5. //检查sd卡时操作
  6. } else if (newState.equals(Environment.MEDIA_MOUNTED)) {
  7. //sd在手机上可用时操作
  8. }...
  9. }

StorageEventListener中还有onUsbMassStorageConnectionChanged()用来监听大容量存储是否连接,我对这个方法不太了解,原来以为用来监听usb线是否拔出的,可实际在linux上好像没什么问题,但在windows上却无法用来监听usb拔出状态,也不知道是驱动有问题还是我用错了,期待高手解答。

2.通过接收Intent来监听sd卡状态
sd卡状态改变时,MountServices会发送Intent,可以通过接收Intent来得到sd卡状态,Intent中关于sd卡状态的action有:
MEDIA_BAD_REMOVAL_ACTION:sd卡已经从sd卡插槽拔出,但是挂载点还没解除
MEDIA_EJECT_ACTION:用户想要移除sd卡
MEDIA_MOUNTED_ACTION:sd卡被插入,且已经挂载
MEDIA_REMOVED_ACTION:sd卡被移除
MEDIA_SHARED_ACTION:sd卡作为 USB 大容量存储被共享,挂载被解除
MEDIA_UNMOUNTED_ACTION:sd卡存在,但还没有挂载
MEDIA_SCANNER_STARTED_ACTION:开始扫描
MEDIA_SCANNER_FINISHED_ACTION:扫描完成

如果只是获取当前sd卡状态,不需要对其监听,可以用方法Environment.getExternalStorageState()获得当前sd卡状态。

Android USB大容量存储时SD卡状态监听(转)的更多相关文章

  1. SD卡状态监听(无序广播)

    import android.content.BroadcastReceiver; import android.content.Context; import android.content.Int ...

  2. SD卡的监听

    摘要:在一般应用中,如果需要对占用空间比较大的文件操作,需要监听SD卡的状态,Android中对SD卡的监听状态操作步骤如下: 一.创建一个类继承于BroadcastReceiver public c ...

  3. 广播接收者案例_sd卡状态监听

    (1)定义广播接收者 import android.content.BroadcastReceiver; import android.content.Context; import android. ...

  4. android中广播接收SD卡状态

    mReceiver = new BroadcastReceiver() { //add by mengmeng.chen begin public void onReceive(Context con ...

  5. 监听SD卡状态

     最近在做项目时遇到需要处理SD卡拔出时的监听,在网上找了很多资料.总结了一下, 用接收广播处理最有效率     sd卡拔插时会发送广播,具体如下(摘自一位大虾的博客  来自:http://blog. ...

  6. android86 监听SD卡状态,勒索软件,监听应用的安装、卸载、更新,无序广播有序广播

    * 添加权限 <uses-permission android:name="android.permission.RECEIVE_SMS"/> * 4.0以后广播接收者 ...

  7. Android(java)学习笔记183:判断SD卡状态和存储空间大小

    当我们在使用SD卡时候,如果我们想往SD卡里读写数据,我们必须在这之前进行一个逻辑判断,那就是判断SD卡状态和SD存储空间大小: 核心代码: String status = Environment.g ...

  8. Android(java)学习笔记126:判断SD卡状态和SD卡容量

    1. 判断SD卡状态和SD卡存储空间大小 当我们在使用SD卡时候,如果我们想往SD卡里读写数据,我们必须在这之前进行一个逻辑判断,那就是判断SD卡状态和SD存储空间大小: 核心代码: String s ...

  9. Android中播放本地SD卡中歌曲须要的加入的权限

    使用MediaPlayer播放本地Mp3文件时.须要注意的訪问路径的问题以及訪问权限的问题. 1.訪问路径:/storage/emulated/0 此路径即为手机的根路径,能够通过下载ES文件浏览器软 ...

随机推荐

  1. VBA验证工作表是否存在

    使用VBA验证工作表是否存在 ============================================================= 代码区域 ================== ...

  2. 我的第一个 RN 项目-趣闻

    代码地址如下:http://www.demodashi.com/demo/13486.html 项目预览 IOS: Android: 扫描体验: 或者点我 整体功能跟之前小程序和 Android 项目 ...

  3. 点滴记录:input的value不能放值

     以前我写登录框交互的时候,总是在focus和blur时,把input的value值为空或显示,也一直认为对的没有争议.可是,今天,后台同学告诉我这个不好使了?!我一时没听明白,后来他亲自演示后,我才 ...

  4. Ffmpeg 视频教程 向视频中添加文字

    Ffmpeg支持添加文字功能,具体如何将文字叠加到视频中的每一张图片,FFmpeg调用了文字库FreeSerif.ttf.当我们 用到ffmpeg 添加文字功能时 我们需要先下载改文字库,下载地址是h ...

  5. web开发中常见的安全漏洞及避免方法

    1.安全攻击 1.SQL.HTML.JS.OS命令注入 2.XSS跨站脚本攻击,利用站内信任的用户,在web页面插入恶意script代码 3.CSRF跨站请求伪造,通过伪装来自信任用户的请求来利用受信 ...

  6. 转: RabbitMQ实现中AMQP与MQTT消息收发异同

    转自:http://www.cnblogs.com/lucifer1997/p/9438186.html 实现了AMQP与MQTT(至多一次)后,用多个队列以topic exchange的方式用相同交 ...

  7. docker容器互连

    三种方式 1.使用容器连接的示例如下: $ docker run --name some-app --link itbilu-mysql:mysql -d application-that-uses- ...

  8. C++ - 派生类强制转换为基类

    派生类强制转换为基类 本文地址: http://blog.csdn.net/caroline_wendy/article/details/24268821 在多态的使用时, 派生类的指针或引用能够转换 ...

  9. unity, 3dmax制作的morph(blendshape)导入unity中使用注意事项

    在实现<乱纪元大冒险>(见:http://www.cnblogs.com/wantnon/p/4857072.html)中由于质子展开失败形成的变形几何体和眼睛.几何体经过一系列形变最后变 ...

  10. Android实现微信自己主动抢红包的程序

    简单实现了微信自己主动抢红包的服务,原理就是依据keyword找到对应的View, 然后自己主动点击.主要是用到AccessibilityService这个辅助服务,基本能够满足自己主动抢红包的功能, ...