我在nougat上开发了一个应用程序,它在外部存储中创建了一个目录。
我以前是这样做的
final File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Chords/Processed Audio");
dir.mkdirs();
这段代码似乎不适用于API 26 (Android )。没有创建目录。
如何实现相同的目标,最好是适用于从API 21到API 26的所有android版本?。
发布于 2017-09-29 13:58:20
在运行Android8.0的Nexus5X上运行您现有的代码没有问题。使用adb shell ls /storage/emulated/0
,我看到了Chores/
,在里面我看到了Processed Audio/
。这是用于具有WRITE_EXTERNAL_STORAGE
权限的应用程序,包括运行时权限。
尽管如此,理想情况下,不要使用字符串连接来创建File
对象。相反,请使用:
final File dir = new File(new File(Environment.getExternalStorageDirectory(), "Chords"), "Processed Audio");
发布于 2017-12-11 09:56:06
@Daniele,见https://stackoverflow.com/a/44455957/966789和https://stackoverflow.com/a/33031091/966789 (Android为Android6.0添加了新的权限模型(Marshmallow) )。如果您的targetSdkVersion >= 23正在Marshmallow (或更高版本)设备上运行,则可能需要启用运行时权限。您还应该阅读更多有关运行时权限更改的内容。如果使用的是targetSdkVersion >= 24,则还必须按照本节所示配置FileProvider。下面的示例使用com.codepath.fileprovider,应该与指定的当局XML标记相匹配)
https://stackoverflow.com/questions/46489706
复制相似问题