对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. Android之常用功能代码

    透明导航栏 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { getWindow().addFlags(WindowManage ...

  2. codesmith 自动生成C# model 实体模板

    <%-- Name:自动生成 Author: 陈胜威 Description: 直接生成model类 --%> <%@ Template Language="C#" ...

  3. ehcache object key的实现原理

    这几天为了设计缓存机制,查阅了非常多缓存方面的资料,作为没有实战经验的小白自然被各种性能报告.内存机制.集群方式搞得一头雾水. 但查了这些资料后.对各个cache的特点有了感性的了解. ehcache ...

  4. Solr3.6.2和Solr4.9.0经常使用配置

    tomcat 以tomcat 7为例,位置/work/apache-tomcat-7.0.55 Solr 3.6.2 基本配置 Solr 3.6.2.须要JDK 6/JDK7支持. 下载Solr 3. ...

  5. vivado error [Labtools 27-2149]

    使用vivado2014.3时遇到了这种错误 ERROR: [Labtools 27-2149] File E:/project/V7_PCIE/prj/PhasedProject/M_PcieGen ...

  6. Outlets 和Referencing Outlets的区别

    转自:http://blog.sina.com.cn/s/blog_4431c7610100sypy.html 我的理解就是连接与被连接的关系吧 Outlets里面显示的是你的属性, 以及连接着的目标 ...

  7. JS检查浏览器类型和版本号

    先取得Navigator对象的userAgent属性的小写信息,之后依据正則表達式推断赋值. var Sys = {}; var ua = navigator.userAgent.toLowerCas ...

  8. java 发送带Basic Auth认证的http post请求实例代码

    构造http header private static final String URL = "url"; private static final String APP_KEY ...

  9. 221. Add Two Numbers II【medium】

    You have two numbers represented by a linked list, where each node contains a single digit. The digi ...

  10. 获取表单select域的选择部分的文本

    body> <form action="index.php"> <select name="" id="select" ...