【发布时间】:2013-12-21 17:29:22
【问题描述】:
在第一次启动应用程序时,我使用 context.getFilesDir() 创建一个文件来获取存储路径。 这工作正常,除了极少数情况外,此方法返回“/”根文件夹。结果应用程序崩溃:
java.io.FileNotFoundException: /my_filename(只读文件系统)
当我在我的设备上调试时,文件路径是:
/data/data/my.package/files/my_filename
此代码在 SherlockActivity 的 onCreate 中调用。所以上下文就是活动的上下文。奇怪的是,这种故障很少见,并且发生故障的设备之间没有共性。
更新: 根据目前的反馈,这段代码应该可以工作,偶尔的失败可能是由于奇怪的设备。试图解决这个问题对于我的用例来说是一种过度杀伤,因为文件存储并不是真正强制性的。我将尝试迁移我的代码以使用 SharedPreferences。
【问题讨论】:
-
坦率地说,这些听起来像是坏掉的设备——也许是自定义 rom 安装有问题?这不是一个有任何记录在案的失败模式的调用。
-
可能。尽管失败率很小,但就绝对数量而言,它们值得关注。我无法阻止这些用户下载和评价应用!
-
您可以检测到这一点并弹出“检测到有缺陷的手机”的内容,或者在这种情况下使用备份位置。