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

Android 检测SD卡是否可用

阅读更多
做软件的时候 也许要存数据要用到SD卡 所以在用之前 最好检测下 SD卡是否可用
下面是java代码
import java.io.File;
import java.util.Date;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class SDCardListener extends BroadcastReceiver {

	private static boolean sdcardAvailable;
	private static boolean sdcardAvailabilityDetected;

	
	/**
	 * 
	 * @return SD is available ?
	 */
	public static synchronized boolean detectSDCardAvailability() {
		boolean result = false;
		try {
			Date now = new Date();
			long times = now.getTime();
			String fileName = "/sdcard/" + times + ".test";
			File file = new File(fileName);
			result = file.createNewFile();
			file.delete();
		} catch (Exception e) {
			// Can't create file, SD Card is not available
			e.printStackTrace();
		} finally {
			sdcardAvailabilityDetected = true;
			sdcardAvailable = result;
		}
		return result;
	}
	
	/**
	 * 
	 * @return SD is available ?
	 */
	public static boolean isSDCardAvailable() {
		if(!sdcardAvailabilityDetected) {
			sdcardAvailable = detectSDCardAvailability();
			sdcardAvailabilityDetected = true;
		}
		return  sdcardAvailable;
	}
	
	/* (non-Javadoc)
	 * @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent)
	 */	
	public void onReceive(Context context, Intent intent) {
		sdcardAvailabilityDetected = false;
		sdcardAvailable = detectSDCardAvailability();
		sdcardAvailabilityDetected = true;
	}

}


然后在 AndroidManifest.xml中写下以下的话
<receiver android:name=".SDCardListener">
			<intent-filter>
				<action android:name="android.intent.action.MEDIA_EJECT" />
				<action android:name="android.intent.action.MEDIA_MOUNTED" />
				<action android:name="android.intent.action.MEDIA_REMOVED" />
				<action android:name="android.intent.action.MEDIA_UNMOUNTED" />
				<data android:scheme="file" />
			</intent-filter>
		</receiver>

搞定

如果觉得上面那种方法太麻烦了 我给出一个超简单的判断方法
代码如下
if (Environment.getExternalStorageState().equals(
					Environment.MEDIA_MOUNTED)) {
				// sd card 可用
					
				}else {
// 当前不可用
}
分享到:
评论

相关推荐

    Android23SD卡挂载流程浅析.docx

    ### Android 2.3 SD卡挂载流程浅析 #### 一、概述 在Android 2.3系统中,对于外部存储设备如SD卡的管理采用了一种较为成熟且自动化的机制。当用户将SD卡插入设备时,系统能够自动识别并完成挂载操作,使用户可以...

    07检查SD卡状态

    3. **检查SD卡可用性** 除了获取状态字符串,还可以通过`Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)`来判断SD卡是否可用且可读写。如果结果为`true`,则表示SD卡正常挂载。 4. **...

    android 获取sd卡状态

    通过上述步骤,我们可以有效地在Android应用中检查SD卡的状态并获取其总空间和可用空间。这些信息对于管理应用的数据存储至关重要,可以帮助开发者做出更合理的决策,避免因存储空间不足而导致的问题。

    android sd卡写文件备份

    首先,你需要检查SD卡是否可用: ```java boolean isSDCardAvailable = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED); ``` 然后,获取SD卡的根目录: ```java File ...

    android4.2 sd卡挂载流程图

    SD 卡热插拔流程是 Android 操作系统中的一种机制,用于检测和处理 SD 卡的插入和拔出事件。在 Android 4.2 平台上,该机制是如何工作的呢? 首先,kernel 层会检测到 SD 卡的插入事件,并将其传递给 uevent 机制。...

    android手机获取SD卡信息代码

    1. **检查SD卡是否挂载:** 可以通过`Environment.getExternalStorageState()`方法检查SD卡的状态,如`MEDIA_MOUNTED`表示已挂载,可以读写;`MEDIA_UNMOUNTED`表示未挂载;`MEDIA_SHARED`表示SD卡正在被USB设备...

    android下sd卡文件识别

    虽然不能直接判断SD卡的真伪,但可以通过一些间接方式,比如检查可用空间、总空间等是否符合正常逻辑: ```java StatFs statFs = new StatFs(sdCard.getAbsolutePath()); long blockSize = statFs.getBlockSize()...

    Android应用源码之判断双SD卡_CheckDoubleSDCard-IT计算机-毕业设计.zip

    在Android应用开发中,有时我们需要判断设备是否存在两个外部存储卡,即双SD卡。这个"Android应用源码之判断双SD卡_CheckDoubleSDCard"项目就是针对这一需求的一个实例。这个源码Demo可以帮助开发者理解如何在...

    Android 读取SD卡中文件以及内存使用情况

    在Android平台上,与外部存储(通常称为SD卡)交互是应用程序开发中的常见任务。这篇博客“Android 读取SD卡中文件以及内存使用情况”详细介绍了如何在Android应用中读取SD卡上的文件以及监控内存使用状态。这篇文章...

    Android开发之系统信息【1】——获取Android手机中SD卡存储信息

    可以使用`Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)`来检查SD卡的状态。如果返回`true`,则表示SD卡已经挂载且可用。 获取SD卡的根目录可以通过`Environment....

    文件从sd卡某个目录复制到另一个目录

    在Android中,可以通过以下代码来检查SD卡的状态: ```java // 获取外部存储状态 String state = Environment.getExternalStorageState(); // 检查SD卡是否可用 if (Environment.MEDIA_MOUNTED.equals(state)) { ...

    android 信号强度检测和SD卡存储空间检测code

    在Android开发中,检测设备的信号强度以及SD卡的存储空间是两个常见的需求。这篇文章将详细阐述如何实现这两个功能,并提供相关的代码示例。 一、Android信号强度检测 在Android系统中,我们可以使用...

    自己写的android中解压SD卡中的资源文件包demo

    1. 检查SD卡是否可用,并获取SD卡的根目录路径: ```java if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { String sdCardPath = Environment.getExternalStorageDirectory()....

    android 多个SD卡检测

    // 检查路径是否代表一个SD卡 } cursor.close(); } ``` 请注意,从Android 6.0(API级别23)开始,你需要请求`READ_EXTERNAL_STORAGE`权限才能访问外部存储。在Android 10(API级别29)及更高版本,对于特定的...

    android 中sd卡的创建

    使用`Environment`类的静态方法来检查SD卡是否可用: ```java boolean isExternalStorageMounted() { return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED); } ``` 3. **获取SD...

    android 信号强度检测和SD卡存储空间检测

    // 检查SD卡是否可写 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED_WRITEABLE)) { // SD卡可写,执行相关操作 } else { // SD卡不可写,显示提示或执行其他操作 } // 检查是否有...

    开发之 SD卡的使用

    - 总是在使用SD卡时检查其可用性,因为并非所有设备都有SD卡插槽,或者用户可能未插入SD卡。 - 文件命名应遵循统一规范,方便管理和查找。 - 注意文件的安全性,避免敏感数据泄露。 - 使用异步操作处理文件读写...

    Android23SD卡挂载流程浅析.doc

    在Android系统中,SD卡的挂载过程是一个关键的操作,它涉及到用户数据的存储和访问。在Android 23中,这个过程主要由vold服务管理,它是Android系统中的一个守护进程,负责设备的挂载和卸载。本文将深入探讨Android ...

    android sdcard加载和使用

    如果返回`Environment.MEDIA_MOUNTED`,则表示SD卡可用;如果是`Environment.MEDIA_REMOVED`、`Environment.MEDIA_UNMOUNTED`或`Environment.MEDIA_SHARED`等其他值,则表示SD卡不可用或被共享。 ### 五、SD卡的...

    Android 之 将RAW资源文件写入SD卡工具类

    在Android开发中,有时我们需要将应用内部的RAW资源文件复制到外部存储(如SD卡)以便于用户访问或保存数据。这个"Android之将RAW资源文件写入SD卡工具类"是一个实用的功能,可以帮助开发者轻松完成这个任务。下面将...

Global site tag (gtag.js) - Google Analytics