首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当父目录可写时,mkdirs为SD卡上的目录返回false

当父目录可写时,mkdirs为SD卡上的目录返回false
EN

Stack Overflow用户
提问于 2010-10-31 16:25:38
回答 14查看 18.4K关注 0票数 19

当启动我的android应用程序时,我需要在SD卡上创建一个目录,对于少数用户来说,这是失败的,我找不到原因……

(我发现了类似的WRITE_EXTERNAL_STORAGE权限缺失导致的问题,它就在那里,它几乎对所有用户都有效,所以我不认为这是原因)

我已经简化了前面的情况,以便更容易解释,如果创建目录失败,我运行一个测试用例,尝试在SD卡上创建一个.test目录:

代码语言:javascript
复制
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返回错误,因为测试是在sdk <9上运行的)

我们非常欢迎您的建议和想法。

EN

回答 14

Stack Overflow用户

发布于 2010-10-31 18:23:55

当您在清单中没有权限时,这是很常见的。

代码语言:javascript
复制
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

对我来说,这是唯一错误的事情。

票数 15
EN

Stack Overflow用户

发布于 2015-05-30 03:23:40

我遇到了类似的问题,花了几个小时才意识到哪里出了问题。它在Sumsung上不起作用,但在其他手机上运行得很好。我真的有WRITE_EXTERNAL_STORAGE权限,getExternalStorageDirectory已经挂载并可用了。但是目录仍然没有被创建。有什么帮助?我刚重新启动了设备!这是有帮助的!遗憾的是,以前没有人建议这样做。希望这能有所帮助!

票数 7
EN

Stack Overflow用户

发布于 2016-02-17 09:47:52

首先,从技术上讲,mkdirs()返回false并不意味着它失败了,它只是意味着它没有创建目录。如果这些目录已经存在,那么mkdirs()将继续返回false。

其次,在Android 6中,您不仅需要:

代码语言:javascript
复制
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

您还需要以下内容的等价物:

代码语言:javascript
复制
ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED

有关检查权限的详细信息,请参阅:

https://github.com/googlesamples/android-RuntimePermissions

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4062357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档