【发布时间】:2011-05-03 00:27:09
【问题描述】:
在启动我的android应用程序时,我需要在sd卡上创建一个目录,对于少数用户这会失败,我无法弄清楚它的原因......
(我发现了由于缺少 WRITE_EXTERNAL_STORAGE 权限而导致的类似问题,它存在并且几乎适用于所有用户,所以我认为这不是原因)
我已经简化了前面的情况以便更容易解释,如果创建目录失败,我会运行一个测试用例,尝试在 sdcard 上创建一个 .test 目录:
new File(Environment.getExternalStorageDirectory(), ".test").mkdir() -> false
new File(Environment.getExternalStorageDirectory(), ".test").mkdirs() -> false
相关目录的文件属性:
/sdcard/.test (exists=false canWrite=false canRead=false canExecute=err isDirectory=false isFile=false)
/sdcard (exists=true canWrite=true canRead=true canExecute=err isDirectory=true isFile=false)
/ (exists=true canWrite=false canRead=true canExecute=err isDirectory=true isFile=false)
getExternalStorageState=mounted
(canExecute 返回 err 因为测试是在 sdk
非常欢迎提出建议和想法...
【问题讨论】:
-
你能在你试图创建目录的地方显示代码吗?例如,如果你有硬连线
/sdcard,那可能就是你的问题。 -
@CommonsWare:我正在使用 Environment.getExternalStorageDirectory() 并考虑在解决此问题后切换到 Context.getExternalFilesDir(null) ......我将使用代码编辑我的原始帖子.. 感谢您的快速回复!
-
请记住,
getExternalFilesDir()仅适用于 Android 2.2,并且在该版本中已损坏。在可预见的未来,我会坚持你目前的策略。 -
你找到解决方案了吗?
标签: android mkdir android-sdcard