首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android Oreo (API 26) -在外部存储中创建dir

Android Oreo (API 26) -在外部存储中创建dir
EN

Stack Overflow用户
提问于 2017-09-29 13:19:34
回答 2查看 5.5K关注 0票数 6

我在nougat上开发了一个应用程序,它在外部存储中创建了一个目录。

我以前是这样做的

代码语言:javascript
运行
复制
final File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Chords/Processed Audio");
dir.mkdirs();

这段代码似乎不适用于API 26 (Android )。没有创建目录。

如何实现相同的目标,最好是适用于从API 21到API 26的所有android版本?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-29 13:58:20

在运行Android8.0的Nexus5X上运行您现有的代码没有问题。使用adb shell ls /storage/emulated/0,我看到了Chores/,在里面我看到了Processed Audio/。这是用于具有WRITE_EXTERNAL_STORAGE权限的应用程序,包括运行时权限。

尽管如此,理想情况下,不要使用字符串连接来创建File对象。相反,请使用:

代码语言:javascript
运行
复制
final File dir = new File(new File(Environment.getExternalStorageDirectory(), "Chords"), "Processed Audio");
票数 7
EN

Stack Overflow用户

发布于 2017-12-11 09:56:06

@Daniele,见https://stackoverflow.com/a/44455957/966789https://stackoverflow.com/a/33031091/966789 (Android为Android6.0添加了新的权限模型(Marshmallow) )。如果您的targetSdkVersion >= 23正在Marshmallow (或更高版本)设备上运行,则可能需要启用运行时权限。您还应该阅读更多有关运行时权限更改的内容。如果使用的是targetSdkVersion >= 24,则还必须按照本节所示配置FileProvider。下面的示例使用com.codepath.fileprovider,应该与指定的当局XML标记相匹配)

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

https://stackoverflow.com/questions/46489706

复制
相关文章

相似问题

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