Android 检测SD卡应用

简介: Android 检测SD卡应用 //                                    Environment.MEDIA_MOUNTED // sd卡在手机上正常使用状态  // Environment.
Java代码   收藏代码
  1. if (Environment.getExternalStorageState().equals(    
  2.                     Environment.MEDIA_MOUNTED)) {    
  3.                 // sd card 可用    
  4.                         
  5.                 }else {    
  6. // 当前不可用    
  7. }    




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 是存在但是没有被安装 
如: 
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. }  


  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卡状态...



相关文章
|
15天前
|
移动开发 Java Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【4月更文挑战第3天】在移动开发领域,性能优化一直是开发者关注的焦点。随着Kotlin的兴起,其在Android开发中的地位逐渐上升,但关于其与Java在性能方面的对比,尚无明确共识。本文通过深入分析并结合实际测试数据,探讨了Kotlin与Java在Android平台上的性能表现,揭示了在不同场景下两者的差异及其对应用性能的潜在影响,为开发者在选择编程语言时提供参考依据。
|
4天前
|
搜索推荐 开发工具 Android开发
安卓即时应用(Instant Apps)开发指南
【4月更文挑战第14天】Android Instant Apps让用户体验部分应用功能而无需完整下载。开发者需将应用拆分成模块,基于已上线的基础应用构建。使用Android Studio的Instant Apps Feature Library定义模块特性,优化代码与资源以减小模块大小,同步管理即时应用和基础应用的版本。经过测试,可发布至Google Play Console,提升用户便利性,创造新获客机会。
|
5天前
|
Java API 调度
安卓多线程和并发处理:提高应用效率
【4月更文挑战第13天】本文探讨了安卓应用中多线程和并发处理的优化方法,包括使用Thread、AsyncTask、Loader、IntentService、JobScheduler、WorkManager以及线程池。此外,还介绍了RxJava和Kotlin协程作为异步编程工具。理解并恰当运用这些技术能提升应用效率,避免UI卡顿,确保良好用户体验。随着安卓技术发展,更高级的异步处理工具将助力开发者构建高性能应用。
|
5天前
|
编解码 人工智能 测试技术
安卓适配性策略:确保应用在不同设备上的兼容性
【4月更文挑战第13天】本文探讨了提升安卓应用兼容性的策略,包括理解平台碎片化、设计响应式UI(使用dp单位,考虑横竖屏)、利用Android SDK的兼容工具(支持库、资源限定符)、编写兼容性代码(运行时权限、设备特性检查)以及优化性能以适应低端设备。适配性是安卓开发的关键,通过这些方法可确保应用在多样化设备上提供一致体验。未来,自动化测试和AI将助力应对设备碎片化挑战。
|
11天前
|
移动开发 API Android开发
构建高效Android应用:探究Kotlin协程的优势与实践
【4月更文挑战第7天】 在移动开发领域,性能优化和应用响应性的提升一直是开发者追求的目标。近年来,Kotlin语言因其简洁性和功能性在Android社区中受到青睐,特别是其对协程(Coroutines)的支持,为编写异步代码和处理并发任务提供了一种更加优雅的解决方案。本文将探讨Kotlin协程在Android开发中的应用,揭示其在提高应用性能和简化代码结构方面的潜在优势,并展示如何在实际项目中实现和优化协程。
|
Android开发
屏蔽Android PIE检测机制
最近做NDK开发相关的项目,总会时不时冒出下面这句打印信息: error: only position independent executables (PIE) are supported.后面一查,原来是Android版本新添加的保护机制,以前在RK3168 android4.1上没有看到这个东西。
1362 0
|
20天前
|
Java Android开发
Android 开发获取通知栏权限时会出现两个应用图标
Android 开发获取通知栏权限时会出现两个应用图标
12 0
|
1月前
|
XML 缓存 Android开发
Android开发,使用kotlin学习多媒体功能(详细)
Android开发,使用kotlin学习多媒体功能(详细)
94 0
|
1月前
|
设计模式 人工智能 开发工具
安卓应用开发:构建未来移动体验
【2月更文挑战第17天】 随着智能手机的普及和移动互联网技术的不断进步,安卓应用开发已成为一个热门领域。本文将深入探讨安卓平台的应用开发流程、关键技术以及未来发展趋势。通过分析安卓系统的架构、开发工具和框架,本文旨在为开发者提供全面的技术指导,帮助他们构建高效、创新的移动应用,以满足不断变化的市场需求。
18 1
|
1月前
|
机器学习/深度学习 调度 Android开发
安卓应用开发:打造高效通知管理系统
【2月更文挑战第14天】 在移动操作系统中,通知管理是影响用户体验的关键因素之一。本文将探讨如何在安卓平台上构建一个高效的通知管理系统,包括服务、频道和通知的优化策略。我们将讨论最新的安卓开发工具和技术,以及如何通过这些工具提高通知的可见性和用户互动性,同时确保不会对用户造成干扰。
33 1