`
李光正
  • 浏览: 27935 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android 检测SD卡应用

阅读更多
if (Environment.getExternalStorageState().equals(  
                    Environment.MEDIA_MOUNTED)) {  
                // sd card 可用  
                      
                }else {  
// 当前不可用  
}  




Environment.MEDIA_MOUNTED // sd卡在手机上正常使用状态
Environment.MEDIA_UNMOUNTED // 用户手工到手机设置中卸载sd卡之后的状态
Environment.MEDIA_REMOVED // 用户手动卸载,然后将sd卡从手机取出之后的状态
Environment.MEDIA_BAD_REMOVAL // 用户未到手机设置中手动卸载sd卡,直接拨出之后的状态
Environment.MEDIA_SHARED // 手机直接连接到电脑作为u盘使用之后的状态
Environment.MEDIA_CHECKINGS // 手机正在扫描sd卡过程中的状态

在做android开发对sd操作时,最好是sd卡处于Environment.MEDIA_MOUNTED状态时,对sd卡上的文件进行操作,其他状态不宜进行操作。


  对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 是存在但是没有被安装
如:
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:扫描完成


  如果只是获取当前sd卡状态,不需要对其监听,可以用方法Environment.getExternalStorageState()获得当前sd卡状态
分享到:
评论
1 楼 xiaojianhx 2013-06-11  
Environment 是哪个包里面的?
我开发4.0,用不了这个类

相关推荐

    Android SD 卡管理工具

    SD女佣 SD Maid Pro将会以完善的方式帮您整理、清洁android设备。”浏览器”是一个完全成熟的文件管理器,用它来浏览管理你的android文件夹。”搜索器”可以使用来打来/删除 或者重命名文件(搜索文件内部,支持...

    Android SD 卡管理工具 SD Maid 5.1.4 中文多语免费版.zip

    Android SD 卡管理工具 SD Maid Pro 中文版Android SD 卡管理工具 SD Maid Pro 中文版 这个来自您 Android 设备的女佣,会让你的存储器恢复到整洁状态并保持下去。 这个程序最好安装在已经 ROOT 的 Android 设备 !...

    VLC for Android 1.0.0

    整合了DVD iso和菜单支持,均衡器、播放清单管理,Widi屏幕支持和更新的SD卡检测; 默认在Android 4.3及以上版本中开启硬件加速功能,能够获得更加的字幕支持; 软件的解码速度同时也得到了进一步加快。

    新版Android开发教程.rar

    MicroSD 卡 ; QWERTY 全键盘; 310 万像素摄像头。 流媒体 支持视频格式: H.264 、流媒体、 3GPP 、 MPEG4 和 Codec 3GP ;支持音频格式: MP3 、 AAC 、 AAC+ 、 W MA 、 MPEG4 、 WAV 、 MIDI 、 REAL 、 AUDIO ...

    基于开源EasyPR的车牌识别Android工程源码 ER_CarPlate

    1、安装后打开应用后点击 车牌检测即可测试sd卡目录下的默认包含车牌的图片。 2、如果要编译C,ndk我用的是r10e,当然r9c也没问题 3、基于OpenCV-android-sdk3.0,编译时,可将工程拷到OpenCV-android-sdk的sampls...

    apk 安装器 3.0

    新版本提供了Android手机软件、游戏的广告检测,提供安装后在PC执行运行,支持安装应用到SD卡上,支持多个设备选择。兼容Android 1.5到Android 3.2之间的手机和平板设备。 APK安装器 v3.0 中文免费版更新内容: + ...

    疯狂Android讲义源码

     1.3.7 使用mksdcard管理虚拟SD卡 19  1.4 开始第一个Android应用 20  1.4.1 使用Eclipse开发第一个  Android应用 20  1.4.2 通过ADT运行Android应用 23  1.5 Android应用结构分析 24  1.5.1 创建一个Android...

    可检测外置sd路径和读写功能

    这个小demo是判断手机上是否插入了sd卡(手动插入到手机卡槽的情况),如果拔出sd卡,也会检测到,检测到没有sd的话会提示退出。大家可以修改代码达到自己想要的效果。 sd的卡装载状态是从系统文件里获取,"/...

    精通ANDROID 3(中文版)1/2

    19.3.7 为整个SD卡触发MediaScanner  19.3.8 参考资料  19.4 小结  第20章 使用OpenGL进行3D图形编程  20.1 了解OpenGL的历史和背景  20.1.1 OpenGL ES  20.1.2 OpenGL ES与Java ME  20.1.3 M3G:另...

    疯狂Android讲义.part2

    1.3.7 使用mksdcard管理虚拟SD卡 19 1.4 开始第一个Android应用 20 1.4.1 使用Eclipse开发第一个 Android应用 20 1.4.2 通过ADT运行Android应用 23 1.5 Android应用结构分析 24 1.5.1 创建一个Android应用 24 1.5.2 ...

    疯狂Android讲义.part1

    1.3.7 使用mksdcard管理虚拟SD卡 19 1.4 开始第一个Android应用 20 1.4.1 使用Eclipse开发第一个 Android应用 20 1.4.2 通过ADT运行Android应用 23 1.5 Android应用结构分析 24 1.5.1 创建一个Android应用 24 1.5.2 ...

    精通Android 3 (中文版)2/2

    19.3.7 为整个SD卡触发MediaScanner  19.3.8 参考资料  19.4 小结  第20章 使用OpenGL进行3D图形编程  20.1 了解OpenGL的历史和背景  20.1.1 OpenGL ES  20.1.2 OpenGL ES与Java ME  20.1.3 M3G:另...

    全能工具箱:All-In-One Toolbox 5.1.1.1

    它提供最全面的系统优化功能,包括实时内存信息展示,进程清理,缓存清理,SD卡文件管理,历史记录清除,开机项管理等等。这些功能从各个角度帮助您优化设备性能,能有效的助您解决手机反应慢、耗电快等问题。 功能...

    android调用matlab代码-Android-App-for-Object-Detection:该项目是关于使用OpenCV和深度学习开

    和神经网络开发一个应用程序,并考虑到目标检测目标(特别是 TinyYOLOv3)。 入门 好吧,该项目已经开始使用应用程序制作的基本版本。 这只是一个使用相机的 .apk,按下时只有一个按钮; 使用 . 使用智能手机摄像头...

    Android Service服务详细介绍及使用总结

    service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务总是藏在后台的,...

    all in one toolbox

    它提供最全面的系统优化功能,包括实时内存信息展示,进程清理,缓存清理,SD卡文件管理,历史记录清除,开机项管理等等。这些功能从各个角度帮助您优化设备性能,能有效的助您解决手机反应慢、耗电快等问题。 功能...

    Android开发资料合集--续

    获取SD卡上的文件存储路径 50 将图片保存到SD卡上 50 26、TextView垂直滚动 51 27、判断某服务是否开启 56 28、判断SD卡是否已挂载 56 29、文件操作类 57 1、获得文件或目录的大小 57 2、递归删除目录或文件 57 30、...

    Android通过Service实现简单的音乐播放

    android音乐播放效果,简单的服务开启。 这里将用到android的四大组件之一:Service ... 什么是服务?...比如检测SD卡上文件的变化;再或者在后台记录用户的地理信息位置的改变;或者启动一个服

Global site tag (gtag.js) - Google Analytics