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



相关文章
|
12天前
|
IDE Java 开发工具
深入探索安卓应用开发:从环境搭建到第一个"Hello, World!"应用
本文将引导读者完成安卓应用开发的初步入门,包括安装必要的开发工具、配置开发环境、创建第一个简单的安卓项目,以及解释其背后的一些基本概念。通过一步步的指导和解释,本文旨在为安卓开发新手提供一个清晰、易懂的起点,帮助读者顺利地迈出安卓开发的第一步。
193 65
|
12天前
|
存储 Java Android开发
探索安卓应用开发:构建你的第一个"Hello World"应用
【9月更文挑战第24天】在本文中,我们将踏上一段激动人心的旅程,深入安卓应用开发的奥秘。通过一个简单而经典的“Hello World”项目,我们将解锁安卓应用开发的基础概念和步骤。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供一次实操体验。从搭建开发环境到运行你的应用,每一步都清晰易懂,确保你能顺利地迈出安卓开发的第一步。让我们开始吧,探索如何将一行简单的代码转变为一个功能齐全的安卓应用!
|
6天前
|
设计模式 Java Android开发
安卓应用开发中的内存泄漏检测与修复
【9月更文挑战第30天】在安卓应用开发过程中,内存泄漏是一个常见而又棘手的问题。它不仅会导致应用运行缓慢,还可能引发应用崩溃,严重影响用户体验。本文将深入探讨如何检测和修复内存泄漏,以提升应用性能和稳定性。我们将通过一个具体的代码示例,展示如何使用Android Studio的Memory Profiler工具来定位内存泄漏,并介绍几种常见的内存泄漏场景及其解决方案。无论你是初学者还是有经验的开发者,这篇文章都将为你提供实用的技巧和方法,帮助你打造更优质的安卓应用。
|
17天前
|
开发框架 搜索推荐 开发工具
打造个性化安卓应用:从零开始的Flutter之旅
【8月更文挑战第51天】本文是一篇面向初学者的Flutter入门教程,旨在通过简单易懂的语言和实际代码示例,引导读者步入跨平台移动应用开发的世界。文章首先介绍了Flutter的基本概念和优势,然后逐步展示了如何搭建开发环境、创建第一个Flutter应用,并实现了一个简单的待办事项列表。最后,文章探讨了Flutter在实现高性能和美观界面方面的潜力,鼓励读者发挥创意,探索更多可能。
67 15
|
7天前
|
监控 安全 Java
Kotlin 在公司上网监控中的安卓开发应用
在数字化办公环境中,公司对员工上网行为的监控日益重要。Kotlin 作为一种基于 JVM 的编程语言,具备简洁、安全、高效的特性,已成为安卓开发的首选语言之一。通过网络请求拦截,Kotlin 可实现网址监控、访问时间记录等功能,满足公司上网监控需求。其简洁性有助于快速构建强大的监控应用,并便于后续维护与扩展。因此,Kotlin 在安卓上网监控应用开发中展现出广阔前景。
9 1
|
17天前
|
Java Android开发 UED
🧠Android多线程与异步编程实战!告别卡顿,让应用响应如丝般顺滑!🧵
在Android开发中,为应对复杂应用场景和繁重计算任务,多线程与异步编程成为保证UI流畅性的关键。本文将介绍Android中的多线程基础,包括Thread、Handler、Looper、AsyncTask及ExecutorService等,并通过示例代码展示其实用性。AsyncTask适用于简单后台操作,而ExecutorService则能更好地管理复杂并发任务。合理运用这些技术,可显著提升应用性能和用户体验,避免内存泄漏和线程安全问题,确保UI更新顺畅。
41 5
Android--向SD卡读写数据
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/50721480 // 向SD...
929 0
|
9天前
|
IDE Android开发 iOS开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
【9月更文挑战第27天】在移动应用开发的世界中,Android和iOS是两个主要的操作系统平台。每个系统都有其独特的开发环境、工具和用户群体。本文将深入探讨这两个平台的关键差异点,并分析这些差异如何影响应用的性能、用户体验和最终的市场表现。通过对比分析,我们将揭示选择正确的开发平台对于确保项目成功的重要作用。
|
22天前
|
Android开发 开发者 Kotlin
探索安卓开发中的新特性
【9月更文挑战第14天】本文将引导你深入理解安卓开发领域的一些最新特性,并为你提供实用的代码示例。无论你是初学者还是经验丰富的开发者,这篇文章都会给你带来新的启示和灵感。让我们一起探索吧!
下一篇
无影云桌面