gpt4 book ai didi

java - android mkdirs 在 sd 卡上返回 false

转载 作者:太空狗 更新时间:2023-10-29 14:01:47 24 4
gpt4 key购买 nike

我在我的应用程序中制作了一个小文件浏览器,我想支持创建新文件夹。

当导航到设备内置内存中的某个位置时,一切都按预期工作,但是当我导航到我的 SD 卡并尝试创建一个新文件夹时,行 new File(path + File.separator + newFolderName ).mkdirs() 返回 false。

我做了以下调试测试:

String path = "/storage/external_SD";   // Not hard coded - user navigates here
new File(path).isDirectory(); --> true
new File(path).canRead(); --> true
new File(path).canWrite(); --> true

String newFolderPath = path + File.separator + newFolderName;
new File(newFolderPath).isDirectory(); --> false
new File(newFolderPath).mkdir(); --> false
new File(newFolderPath).mkdirs(); --> false

我注意到了一些奇怪的事情:我在 mkdirs() 的第一行的 File 类中放置了一个断点,但应用程序并没有在该行停止并立即返回 false。这让我认为这是一个权限问题,即使我在正确的位置拥有正确的权限:

<manifest ...>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<application ...>
...
</application>

</manifest>

我错过了什么?

最佳答案

自 Android 5.0 起,应用程序只能写入其在外部 SD 卡上的私有(private)位置。

对于所有其他位置,它需要实现 document provider .

Google documentation 中概述了访问外部存储的策略.

关于java - android mkdirs 在 sd 卡上返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35086804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com