根据我的应用程序,我正在下载图片和一些数据,我需要将它们保存在手机内存或 sd 卡中的某个位置。由于图片可能很大,我决定将其保存到 SD 卡中。我正在使用下面的代码来确定 SD 卡是否可用。如果是,我正在使用 SD 卡,如果不是,我正在使用手机内存。但问题是,如果我弹出 SD 卡,我的应用程序会在启动时崩溃,并且出现 File Not Found 异常。据我了解,由于手机有内置SD卡,
android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)
总是返回“已安装”。我如何理解外部 SD 卡是否真的被弹出?
编辑:我试图检查 SD 卡是否可用,因为我正在使用下面的代码并且因为我的手机中有内部 SD 卡
android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)
总是返回 true 并且它在没有 SD 卡的情况下创建目录。因此,检查目录是否为 null 无法了解该文件是否存在。下面是我的代码。
if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {
cacheDir=new File(context.getExternalFilesDir(null), applicationDirectory + folderName);
}
else {
cacheDir = new File(context.getCacheDir(), applicationDirectory + folderName);
}
if(!cacheDir.isDirectory())
cacheDir.mkdirs();
所以根据我的解决方案,我尝试读取所需的文件,如果我得到 FileNotFoundException,我会在应用程序启动时将所有内容从 assets 文件夹复制到目录(SD 卡或手机内存),并用 shared 中的布尔值控制它喜好。这样,如果用户弹出 SD 卡,内容将被复制到手机内存并从该目录工作。
我需要大约 10MB 的缓存空间来保存我的一些文件,并且使用这个解决方案(我不确定它是否有效)如果用户运行应用程序,我的内容将同时存在 SD 卡和手机内存中没有 SD 卡。还有其他解决方案可以找出文件、外部或内部存储器的保存位置吗?感谢您的回答。任何想法将不胜感激。