`
doll
  • 浏览: 82326 次
  • 性别: 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 {
// 当前不可用
}
分享到:
评论

相关推荐

    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 设备 !...

    安卓SD卡文件管理更新信息相关-android读取外置和内置存储卡路径和大小.rar

    android 读取外置和内置存储卡路径和大小.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    安卓SD卡文件管理更新信息相关-android开发6.0检查权限代码.rar

    android开发6.0检查权限代码.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    安卓SD卡文件管理更新信息相关-android检查版本更新.rar

    android检查版本更新.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    安卓SD卡文件管理更新信息相关-Android进入主页面自动检测下载提示更新对话框点击更新后在后台自己下载在通知栏显示下载进度.rar

    Android 进入主页面自动检测下载,提示更新对话框,点击更新后在后台自己下载,在通知栏显示下载进度.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    Android 解析如何检测获取SDCard内存剩余空间.rar

    Android 解析如何检测获取SDCard内存剩余空间,用到了Environment 类、StatFs 类。SDCard存储卡在 Android 手机上是可以随时插拔的,每次的...供测试的sd卡中存了两首歌和一个30M的文件,现在检测剩余的空间正好相符。

    Link2SD Plus 4.3.4 中文增强免费版.zip

    – 内部存储,SD卡和SD卡的第二个分区的可用显示空间信息 – 分享一个应用程序的链接 – 支持35 +语言 Link2SD Plus 特点: – 链接的应用程序的内部数据目录到SD卡 – 友情链接系统应用程序的dex文件到SD卡 – ...

    新版Android开发教程.rar

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

    疯狂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...

    精通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开发资料合集--续

    28、判断SD卡是否已挂载 56 29、文件操作类 57 1、获得文件或目录的大小 57 2、递归删除目录或文件 57 30、手动更新所有Widget 58 31、有关ListView 问题 58 32、在手机上打开文件的方法 59 33、使用系统自带的...

    java_android_文件管理工具类的标准代码

    检查是否已挂载SD卡镜像(是否存在SD卡) 获取SD卡剩余容量(单位Byte) 获取SD卡总容量(单位Byte) 获取可用的SD卡路径(若SD卡不没有挂载则返回"") 以行为单位读取文件内容,一次读一整行,常用于读面向行的格式...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--android 获取sd卡状态 |--android 设置apn |--android 调节屏幕亮度 |--android 资源uri |--android 还原短信 |--android 重启 |--android中anim文件特效 |--app信息menifest获取(如版本号) |--AsyncQueryHandler...

    精通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:另...

    疯狂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 ...

    java_App应用文件管理工具标准代码工具类_android

    获取SD卡剩余空间的大小(SD卡剩余空间的大小(单位:byte)) 获取SDCard的AbsolutePath路径 获取SdCard的Path路径 获取SDCard卡的剩余容量(单位byte) 获取系统AbsolutePath存储路径 获取系统Path存储路径 获取可用...

    Android编程之Sdcard相关代码集锦

    1. 检测Sdcard是否可用: public static boolean sdCardIsAvailable() { String status = Environment.getExternalStorageState(); if (!status.equals(Environment.MEDIA_MOUNTED)) { return false; } return...

Global site tag (gtag.js) - Google Analytics