Android Oreo (API 26) - 在外部存储中创建目录
Android Oreo (API 26) - Create dir in external storage
我在牛轧糖上开发了一个应用程序,它在外部存储中创建了一个目录。
我以前是这样做的:
final File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Chords/Processed Audio");
dir.mkdirs();
此代码似乎不适用于 API 26 (Android Oreo)。目录未创建。
我怎样才能实现同样的目标,最好是适用于从 API 21 到 API 26 的所有 android 版本?
我没问题 运行 您在 Nexus 5X 上的现有代码 运行 Android 8.0。使用 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");
@Daniele,见
和 (Android 为 Android 6.0 (Marshmallow) 添加了新的权限模型。如果您的 targetSdkVersion >= 23 并且您 运行 在 Marshmallow(或更高版本)设备上,您可能需要启用运行时权限。您还应该阅读有关运行时权限更改的更多信息。如果您使用的 targetSdkVersion >= 24,则还必须配置一个 FileProvider,如本节所示。下面的示例使用 com.codepath.fileprovider 和应该匹配指定的权限 XML 标签)
我在牛轧糖上开发了一个应用程序,它在外部存储中创建了一个目录。
我以前是这样做的:
final File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Chords/Processed Audio");
dir.mkdirs();
此代码似乎不适用于 API 26 (Android Oreo)。目录未创建。
我怎样才能实现同样的目标,最好是适用于从 API 21 到 API 26 的所有 android 版本?
我没问题 运行 您在 Nexus 5X 上的现有代码 运行 Android 8.0。使用 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");
@Daniele,见