测试加密的SD卡是否已准备好并准备好在设备重启时使用 - SD卡状态?

时间:2014-09-06 23:17:44

标签: android encryption state sd-card android-sdcard

我的应用程序将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。

1 个答案:

答案 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;