当前位置: 首页 > 知识库问答 >
问题:

Android Oreo(API 26)-在外部存储中创建目录

唐向荣
2023-03-14

我在牛轧糖上开发了一个应用程序,可以在外部存储中创建一个目录。

我以前是这样做的:

final File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Chords/Processed Audio");
dir.mkdirs();

此代码似乎不适用于API 26(Android Oreo)。该目录未创建。

我如何才能实现同样的目标,最好是在API 21到API 26的所有android版本上都能实现?

共有2个答案

咸玄天
2023-03-14

@Daniele,参见https://stackoverflow.com/a/44455957/966789和https://stackoverflow.com/a/33031091/966789(Android为Android 6.0(Marshmallow)添加了新的权限模型)。如果您的targetSdkVersion

马朝斑
2023-03-14

我可以在运行Android 8.0的Nexus 5X上运行您现有的代码。使用adb shell ls/storage/simulated/0,我看到了杂务,在里面我看到了处理过的音频。这适用于具有写入外部存储权限(包括运行时权限)的应用程序。

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

final File dir = new File(new File(Environment.getExternalStorageDirectory(), "Chords"), "Processed Audio");
 类似资料:
  • 我正在尝试创建一个目录和文件,以便可以存储从Internet下载的文件。但是,我无法在外部公共存储中创建目录和文件。如果我写入外部私有存储(应用程序的特定存储位置),我完全可以这样做。 代码如下: 上面的代码导致: 09-13 05:33:45.258 5867-5867/? I/S。出来﹕ /存储/0CED-0F09/图片 09-13 05:33:45.260 5867-5867/? I/S。出

  • 最近我更新了我的智能手机到Android11,我注意到我的一个应用程序在创建外部存储目录时崩溃了。我读过Android11文档,这里是。很奇怪,因为当我打开Android/Data dir时,有很多应用程序文件夹,所以有可能这样做,或者有应用程序在更新之前创建的文件夹?

  • 众所周知,谷歌颠覆了Android11的授权概念,并彻底改变了它。 我看了Android留档丛林,但没有找到答案的问题是否仍然可以在外部存储(名为 /storage/emulated/0/)的根目录中创建一个文件夹。如果是,如何? 我的应用在Android上写 临时解决办法可以是这样的: 但这并不理想。如果用户从Android10切换到Android11,那么就有一个大问题。我需要什么额外的代码才

  • 我有问题在Android Studio中创建外部存储的新目录。它可能必须做一些有权限的事情,但据我所知,一切似乎都很好。 我想做的是: 检查目录“/storage/emulated/0/Recordings”是否存在,如果不存在-创建目录 检查文件“/storage/simulated/0/Recordings/tempFile.raw”是否存在,如果存在-将其删除 使用“new FileOutp

  • 问题内容: 我的开发电话正在运行。 在我的应用程序中,我试图在外部存储上创建一个文件夹,该文件夹将存储我的应用程序的调试信息。基本上,它将包含应用程序执行的所有命令,因此,当用户遇到问题时,我可以选择使它们从debug文件夹发送信息给我进行分析。 我首先尝试将文件写入文件夹,但发现创建文件夹时出错。最初,我使用,然后又移至也不起作用。 我有我的清单。 这是用于创建文件夹的代码: 这是我也尝试过的:

  • 问题内容: 我的应用程序( Android API 15 )制作图片并将其存储在内部存储器的文件夹中。现在,我想将此文件复制到外部存储中的另一个文件夹,例如。我尝试了以下方法: 方法1: 方法2: 方法3: 这些方法都不能解决我的任务。在检查了许多相关主题之后,我发现的唯一建议是验证 在和它确实存在。 该 方法#1 完成执行,但没有文件夹和文件被复制。 在 方法#2 ,应用程序失败,异常的,但对象