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

Android 11|范围存储实施

池俊茂
2023-03-14

根据文件

使用范围存储,除非应用需要访问存储在应用特定目录之外和MediaStore API可以访问的目录之外的文件。如果将应用特定文件存储在外部存储上,可以将这些文件放置在外部存储上的应用特定目录中,从而更容易采用范围存储。这样,当启用作用域存储时,应用将保持对这些文件的访问。

在我的情况下,我创建一个文本文件使用以下:

File root = new File(this.getExternalFilesDir(null), "sample");
    if (!root.exists()) {
        root.mkdirs();
    }
File file = new File(root, "sample.txt");

上面是在下面的位置创建文件(但没有可用的SD卡):

/storage/emulated/0/Android/data/<package-name>/files/sample.txt

我正在对它进行写操作。

以下是问题:

>

根据我的理解,由于Android11,范围存储实施没有影响。因为我没有应用需要访问存储在应用特定目录之外的文件的用例。这种理解正确吗?

共有1个答案

云丰
2023-03-14

您绝对可以使用文件API在/storage/simulated/0/Android/data/中创建和访问文件。据我所知,这些地点没有变化。我已经做到了。

要访问下载中的文件,是的,根据我所读的内容,需要范围存储。我还没有测试过这一点,但文档非常清楚,这是Android11中的法律。这是一条糟糕的法律,但法律仍然存在。

 类似资料:
  • 我试图更好地理解一旦Android11版本发布,我将能够做什么。 我的应用程序使用提供的图像文件路径创建相册,但使用Android11,我将无法直接访问文件。 根据Android开发人员的文档,他们最近引入了权限,但我不明白如果添加了这个权限,我是否能够继续通过访问文件。 有人有主意吗??? 谢谢 2021年1月更新 我在一个Android11虚拟设备上试用了我的应用程序,它似乎可以完美地工作,即

  • 问题内容: 我有很多不同提供商的IP范围。例如 我将此IP转换为int32: 我的任务: 通过用户IP地址查找提供者名称(例如192.168.2.20(3232236052)) 在MySQL中很简单: Redis怎么做? 问题答案: 这取决于您是否认为您的IP范围可以重叠。如果不是,则解决方案非常简单: 使用哈希的集合来存储提供者数据 使用zset索引范围的最大值 检索最大值大于IP的(唯一)范围

  • 问题内容: 我有以下代码: 我想尽可能地限制 err 的范围。我要面对的问题是,当我想将变量写入文件时,变量超出了范围。 处理这个问题的惯用方式是什么。我应该只重用变量 err 并在其他 if 块中检查它吗?像这样: 这可行,但对我来说可读性较差。 问题答案: 首先,不需要隔离变量。其次,您可以在if语句中进行简写分配,例如: 处理此特定示例的一种干净方法是将其放入自己的函数中并调用它:

  • 我有一个应用程序,为外部存储上的备份文件创建目录,并在用户退出应用程序时自动创建备份文件。每周创建一个备份文件,然后用最新信息覆盖一个备份文件。 无法在中找到备份文件,因为它们需要在用户重新安装应用程序后继续存在 我不能使用,因为它不是图像或视频 我无法使用在用户每次退出应用程序时要求他保存备份文件 那个么,如何使用新的作用域存储自动创建持久备份文件呢? (如果用户想要恢复其中一个备份文件,我还需

  • 问题内容: 给定您具有接受功能的场景。如果确定是切片,我如何在该切片上? 前往游乐场示例:http://play.golang.org/p/DNldAlNShB 问题答案: 好吧,我曾经使用过,然后如果它是一个切片,则可以调用,并在该值上调用以在索引处获取切片和元素的。我认为您将无法使用范围操作来做到这一点。 前往游乐场示例:http : //play.golang.org/p/gQhCTiwPA

  • 我制作了一个用于注册成员的jsp页面,在注册时,如果用户忘记填写表单中的任何字段,另一个页面会显示一条错误消息。 为了实现这一点,我使用了3个servlet,第一个servlet从jsp页面获取值,并传递到第二个servlet,后者检查是否有任何字段为空,如果是,它将返回一条消息给第一个servlet,然后将消息传递给第三个servlet,以向用户显示错误消息。 我的问题是消息没有从第一个serv