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

Android mkdirs()在带有Environment.getExternalStorageDirectory()的Android 11上返回false

沈开畅
2023-03-14

Mkdirs()函数在Android11上不起作用。在Android10及更低版本上,一切都运行良好。

代码:

***String path =Environment.getExternalStorageDirectory().getAbsolutePath() + "/My_directory/";
    File temp_file = new File(path);
    if (!temp_file.exists()){
        Boolean can_create= temp_file.mkdir();
    }***

以上代码在Android 10或更低版本的情况下返回true。但在Android11的情况下返回false。清单权限:

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

注意到要考虑相同的运行时权限(READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE)。

清单应用程序:

    <application
    android:requestLegacyExternalStorage="true"

我能够在外部存储中写入的唯一方法是使用getExternalFilesDir(),但这不是根目录。

根据这个开发者网站,我们不能再在根目录中创建文件夹了!

检查后的问题:

1-是否确认在Android 11中我们不能在根目录上创建任何文件夹?有工作吗?

2-如果是,将数据保存在外部存储中的方法是什么,不包括GetExternalFilesDir()

3-为什么android:requestlegacyexternalstorage=“true”不起作用?

共有1个答案

长孙鸿
2023-03-14

为什么android:requestlegacyexternalstorage=“true”不起作用?

Android:RequestLegacyExternalStorage不再适用于Android11+。它只是Android10上的一个帮手,让开发者在迁移到范围存储之前有更多的时间。在作用域存储上,您需要使用URI来创建、重命名、移动文件等。因此java.io.file现在几乎没有用了。

是否确认在Android 11中我们不能在根目录上创建任何文件夹?有什么办法吗?

没有变通办法。

顺便说一句,为了减少范围存储的复杂性,我创建了一个名为Simple storage的库。它跨API级别工作。

 类似资料:
  • Spring不会忽略文件扩展名 SpringMVC:依赖于url扩展的不一致映射行为

  • 我正在尝试创建许多文件,作为用户的一个功能。例如,我可能会编写一个应用程序,为他们过去几周听的每首歌创建一个文件(例如,一个带有歌词的文本文件)。我不能让用户为我生成的每个文件选择目录和文件名,这将花费他们数小时的时间。用户应该可以从其他应用程序访问这些文档。 在Android11中,存储访问框架似乎没有什么用处。我注意到最初有两个有趣的选项: 创建一个新文件(该文件创建启动用户与之交互的活动,以

  • 我如何告诉Panache查询的结果将是而不是? 谢谢你的回答 编辑:回购代码:

  • 本文向大家介绍Java Web Service返回带有>和相关面试题,主要包含被问及Java Web Service返回带有>和时的应答技巧和注意事项,需要的朋友参考一下 框架正在按照您所说的去做。您的方法返回,表示生成的WSDL应该具有类型为的响应消息。众所周知,XML字符串必须将某些字符编码为字符实体引用(即“ ”变为“ ”,因此XML解析器将其视为字符串,而不是您期望的XML元素的开头)。如

  • 问题内容: 我相信它在某个时候可以工作,但是现在xpath返回null。有人可以帮助我在以下代码中找到我的愚蠢错误吗? 还是即使在setNamespaceAware(false)之后也必须提供NamespaceContext? XML文档在这里: 问题答案: 三个选择是显而易见的。按照我的观点,最简单的顺序是: 将XPath从更改为。有点笨拙,但它将忽略名称空间。如果仍然为您提供零,则说明问题不在

  • 问题是,如果我输入一个正数(所以一切都正确),我必须输入它两次!同样,当我输入一个负数时,我需要输入两次。当我输入一个字符串时,我会得到一个“错误”,所以我想这还算不错。它是这样显示的: Bitte geben Sie die kleinste阳性Zahl des Intervalls Ein:-2 -3 -7 Bitte Geben Sie eine阳性Zahl ein 2