Android 有两种办法可以监控SDCARD的状态

来源:互联网 发布:人人商城数据库表 编辑:程序博客网 时间:2024/06/06 06:42
在android2.2的时代,貌似有两种办法可以监控SD的状态。

  1. 注册BroadcastRecerver,监听广播(Intent.ACTION_MEDIA_MOUNTED,Intent.ACTION_MEDIA_EJECT,

Intent.ACTION_MEDIA_REMOVED等)

  2. 在StorageManager上挂StorageEventListener监听。
  但是怎么从3.0开始,这两种方法都没法用了呢?那现在我应该如何来监控SD卡的状态?总不能跑个死循环,一直调用Environment.getExternalStorageState ()吧?


对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 是存在但是没有被安装
如:
 
Java代码  收藏代码

   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. }  

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


 
  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:扫描完成

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机淘宝上我是商家停止服务怎么办 淘宝上买的电脑商家关闭了怎么办 淘宝链接复制链链接发不出去怎么办 淘宝卖家填错地址货已经发了怎么办 拼多多没交保证金无法提现怎么办 信用卡被别人刷了没证据怎么办 我在淘宝开个店卖衣服没人买怎么办 收货地址填错了卖家已发货怎么办 淘宝店上的供货商不发货怎么办 在淘宝买的花退到卖家后死了怎么办 在淘宝买东西付款开通了花呗怎么办 淘宝网投诉卖家也不处理问题怎么办 淘宝图片空间上传不了大图片怎么办 不小心把设置里打印机删掉了怎么办 电脑上qq不小心删掉了怎么办 进了一批款式不好卖的衣服怎么办? 淘宝首页图片不居中代码装的怎么办 小语言代码装修以后不是全屏怎么办 招教年龄超过4个月怎么办 淘宝上注册的店铺被别人用了怎么办 淘宝贷款后店铺转让了贷款怎么办 手机千牛发布宝贝类目找不到怎么办 亚马逊被移除销售权该怎么办 玉米煮水不够熟吃了怎么办 华为云手机找回关了找回手机怎么办 我的淘宝号被别人盗用开店怎么办 淘宝买东西发货了不想要了怎么办 两张单号一样罚款已被处理怎么办 58同城登录电话换了怎么办 在超市买的东西坏了怎么办 安卓系统无法安装第三方软件怎么办 金立手机报毒不能安装软件怎么办 js中下拉菜单被图片挡住怎么办 更换主机后用户名跟密码忘了怎么办 换手机号了京东账号登录不上怎么办 口令卡绑定时访问页面找不回怎么办 手机淘宝购物车不小心删除了怎么办 上淘宝网图片文字不清晰怎么办 淘宝店铺低消费人群占比多怎么办 微信只能在应用商城里面打开怎么办 淘宝买了特价商品店家不发货怎么办