【发布时间】:2012-06-20 03:36:26
【问题描述】:
根据我的应用程序,我正在下载图片和一些数据,我需要将它们保存在手机内存或 sd 卡中的某个位置。由于图片可能很大,我决定将其保存到 SD 卡中。我正在使用下面的代码来确定 SD 卡是否可用。如果是,我正在使用 SD 卡,如果不是,我正在使用手机内存。但问题是,如果我弹出 SD 卡,我的应用程序会在启动时崩溃,并且出现 File Not Found 异常。据我了解,由于手机有内置SD卡,
android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)
总是返回“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 卡或手机内存),并用布尔值控制它共享偏好的价值。这样,如果用户弹出 SD 卡,内容将被复制到手机内存并从该目录工作。
我需要大约 10MB 的缓存空间来保存我的一些文件,并且使用此解决方案(我不确定它是否有效)如果用户运行该应用程序,我的内容将同时保存在 SD 卡和手机内存中当没有 SD 卡时。还有其他解决方案可以找出文件、外部或内部存储器的保存位置吗?感谢您的回答。任何想法将不胜感激。
【问题讨论】:
-
显示您的源代码和崩溃日志
-
阅读这篇文章,@CommonsWare 解释说可能只有一个外部 SD 卡 stackoverflow.com/questions/3591494/…