做软件的时候 也许要存数据要用到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 {
// 当前不可用
}
分享到:
相关推荐
SD 卡热插拔流程是 Android 操作系统中的一种机制,用于检测和处理 SD 卡的插入和拔出事件。在 Android 4.2 平台上,该机制是如何工作的呢? 首先,kernel 层会检测到 SD 卡的插入事件,并将其传递给 uevent 机制。...
### Android 2.3 SD卡挂载流程浅析 #### 一、概述 在Android 2.3系统中,对于外部存储设备如SD卡的管理采用了一种较为成熟且自动化的机制。当用户将SD卡插入设备时,系统能够自动识别并完成挂载操作,使用户可以...
3. **检查SD卡可用性** 除了获取状态字符串,还可以通过`Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)`来判断SD卡是否可用且可读写。如果结果为`true`,则表示SD卡正常挂载。 4. **...
通过上述步骤,我们可以有效地在Android应用中检查SD卡的状态并获取其总空间和可用空间。这些信息对于管理应用的数据存储至关重要,可以帮助开发者做出更合理的决策,避免因存储空间不足而导致的问题。
首先,你需要检查SD卡是否可用: ```java boolean isSDCardAvailable = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED); ``` 然后,获取SD卡的根目录: ```java File ...
1. **检查SD卡是否挂载:** 可以通过`Environment.getExternalStorageState()`方法检查SD卡的状态,如`MEDIA_MOUNTED`表示已挂载,可以读写;`MEDIA_UNMOUNTED`表示未挂载;`MEDIA_SHARED`表示SD卡正在被USB设备...
虽然不能直接判断SD卡的真伪,但可以通过一些间接方式,比如检查可用空间、总空间等是否符合正常逻辑: ```java StatFs statFs = new StatFs(sdCard.getAbsolutePath()); long blockSize = statFs.getBlockSize()...
在Android应用开发中,有时我们需要判断设备是否存在两个外部存储卡,即双SD卡。这个"Android应用源码之判断双SD卡_CheckDoubleSDCard"项目就是针对这一需求的一个实例。这个源码Demo可以帮助开发者理解如何在...
在Android开发中,判断SD卡(外部存储)是否已挂载是常见的需求,尤其是在处理与文件系统相关的功能时。下面将详细介绍如何通过BroadcastReceiver来监听并判断SD卡的状态。 首先,BroadcastReceiver是一种Android...
在Android平台上,与外部存储(通常称为SD卡)交互是应用程序开发中的常见任务。这篇博客“Android 读取SD卡中文件以及内存使用情况”详细介绍了如何在Android应用中读取SD卡上的文件以及监控内存使用状态。这篇文章...
可以使用`Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)`来检查SD卡的状态。如果返回`true`,则表示SD卡已经挂载且可用。 获取SD卡的根目录可以通过`Environment....
在Android中,可以通过以下代码来检查SD卡的状态: ```java // 获取外部存储状态 String state = Environment.getExternalStorageState(); // 检查SD卡是否可用 if (Environment.MEDIA_MOUNTED.equals(state)) { ...
在Android开发中,检测设备的信号强度以及SD卡的存储空间是两个常见的需求。这篇文章将详细阐述如何实现这两个功能,并提供相关的代码示例。 一、Android信号强度检测 在Android系统中,我们可以使用...
在Android开发中,有时我们需要将应用内部的RAW资源文件复制到外部存储(如SD卡)以便于用户访问或保存数据。这个"Android之将RAW资源文件写入SD卡工具类"是一个实用的功能,可以帮助开发者轻松完成这个任务。下面将...
1. 检查SD卡是否可用,并获取SD卡的根目录路径: ```java if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { String sdCardPath = Environment.getExternalStorageDirectory()....
// 检查路径是否代表一个SD卡 } cursor.close(); } ``` 请注意,从Android 6.0(API级别23)开始,你需要请求`READ_EXTERNAL_STORAGE`权限才能访问外部存储。在Android 10(API级别29)及更高版本,对于特定的...
确保已获取SD卡的写权限,并检查其是否可用。示例代码如下: ```java for (String fileName : files) { try { InputStream inputStream = assetManager.open(fileName); File outputFile = new File...
使用`Environment`类的静态方法来检查SD卡是否可用: ```java boolean isExternalStorageMounted() { return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED); } ``` 3. **获取SD...
// 检查SD卡是否可写 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED_WRITEABLE)) { // SD卡可写,执行相关操作 } else { // SD卡不可写,显示提示或执行其他操作 } // 检查是否有...
- 总是在使用SD卡时检查其可用性,因为并非所有设备都有SD卡插槽,或者用户可能未插入SD卡。 - 文件命名应遵循统一规范,方便管理和查找。 - 注意文件的安全性,避免敏感数据泄露。 - 使用异步操作处理文件读写...