我的应用程序将sd卡用于SQLite数据库。设备和SD卡必须加密,因为它上面的一些数据(对于应用程序)是专有的。如果在设备重启后立即启动该应用程序将失败,因为无法读取SD卡(通知栏显示它正在准备SD卡)。通知栏报告SD卡准备就绪后,每件事都可以。
我试图用以下方法测试:
Boolean isSDPresent = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
if(isSDPresent)
{
// yes SD-card is present
}
else
{
// Sorry
}
来自这个问题:
Check whether the SD card is available or not programmatically
我试过这个:
boolean sdCardOK = false;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
sdCardOK = true;
} else {
//warn the user and kill the app
}
}
基于:
http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
我可能只是在sd卡上放一个测试文本文件并尝试阅读。如果失败,则警告用户并终止应用程序。但我想做一些更好的事情。它接缝就像我应该能够从android os获取此信息...
用于开发(和部署)的设备是三星Tab 4. SD卡是PNY 32GB和金士顿32GB。
答案 0 :(得分:1)
1.将此文件提交给主要班级
private boolean sdpresent = false;
2.将此代码输入oncrate方法
Timer timer = new Timer();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
sdpresent = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
}
};
timer.schedule(timerTask, 0, 1000);
运行后,每1秒,重新检查SD卡存在
如果sdcard存在:sdpresent = true;