如何在 Android Q 中请求外部文件访问权限?

2024-02-22

Heard 安卓Q引入了一项新的安全功能,称为“范围存储”它限制访问外部存储中的文件。我的问题是我必须将文本文档从应用程序保存到用户指定的位置。这是否需要任何形式的许可而不是READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE在 Q 设备中?


我的问题是我必须将文本文档从应用程序保存到用户指定的位置

Use ACTION_CREATE_DOCUMENT允许用户指定位置。您可以使用ContentResolver和它的openOutputStream()方法得到一个OutputStream为了Uri你从那里回来ACTION_CREATE_DOCUMENT。然后您可以将文本写入其中OutputStream.

这是否需要任何类型的权限而不是 Q 设备中的 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE ?

ACTION_CREATE_DOCUMENT无需任何权限,可回溯到 Android 4.4。

或者,您可以将文件写入由getExternalFilesDir() on Context。这部分外部存储对 Android Q 上的用户可见,不需要额外的权限。

或者,如果你保留你的targetSdkVersion到 28 或更低,您可以使用WRITE_EXTERNAL_STORAGE并在您想要的位置写入,就像在 Android 9.0+ 上所做的那样。但是,请记住,这种方法将不再适用于 Android R,并且当您提高targetSdkVersion超过 28 小时(例如,为了遵守 2020 年的 Play 商店要求)。所以,使用ACTION_CREATE_DOCUMENT, 也许getExternalFilesDir(),是更好的长期答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Android Q 中请求外部文件访问权限? 的相关文章

随机推荐

  • 如何获取不带参数的文件名?

    我需要找到我包含的不带 GET 参数的文件的文件名 例如 如果当前 URL 是 我想要返回 file php 我发现了什么 basename SERVER REQUEST URI 返回 file php a b c d 就我而言 我在购物车
  • DataAnnotations:递归验证整个对象图

    我有一个对象图 上面散布着 DataAnnotation 属性 其中对象的某些属性是本身具有验证属性的类 等等 在以下场景中 public class Employee Required public string Name get set
  • 什么东西永远不等于自己?

    Prolog 中是否存在不等于其自身的价值 我写的answer https stackoverflow com a 53404595 10631003对某些人关于树的最小值的问题 https stackoverflow com q 5339
  • PHP如何检索数组值

    我有以下数组 我想检索name comment and each of the tags 插入数据库 我如何检索数组值 另外 我可以仅过滤大于 3 个字符且仅包含 a Z0 9 值的标签值吗 非常感谢 Array folder gt tes
  • Facebook Like 按钮以 0 宽度和 0 高度呈现?

    我是 facebook api 的新手 所以我不知道这是否是一个新手问题 我所做的是我遵循快速开始 https developers facebook com docs javascript quickstart v2 3 我将以下代码片段
  • Project Reactor:如何控制通量排放

    我有一个能发出一些光的通量Date This Date映射到我在某些设备上运行的 1024 个模拟 HTTP 请求Executer 我想做的是等待所有 1024 个 HTTP 请求 然后再发出下一个请求Date 目前运行时 onNext 被
  • 使用 xsltc.exe XslCompiledTransforms 时如何解析具有相对路径的 元素?

    作为我们的 Web 应用程序构建过程的一部分 我设置了要使用的 XSLT 样式表来构建微软的xsltc exe http msdn microsoft com en us library bb399405 aspx每当我们运行完整编译时 在
  • SwiftUI:选取器中的 ForEach 不更新

    我有一个元素数组 我想使用其中选择一个元素Picker 我有一个Button它只是将一个新元素添加到数组中 问题是 当我添加一个元素时 Picker选择未更新 它不适用于DefaultPickerStyle 但适用于SegmentedPic
  • Android studio 中的 testCompile 结果无法解决依赖关系

    我的测试位于 MainProject Project src test 中 我正在使用 Jake Wharton 的 gradle android test plugin 每当我使用 testCompile 指定依赖项时 它都不会在 IDE
  • MacVim 中的 Vim powerline (Lokaltog's) 奇怪字符

    我正在尝试使用电力线插件 https github com Lokaltog vim powerline https github com Lokaltog vim powerline 第一次 插件好像已经安装了 我通过以下命令使用 vun
  • 将python程序安全连接到mysql

    我想使用 MySQLdb 从我的 python 程序连接到 MySQL 我很担心 因为我需要将用户名和密码输入 py为了连接MySQL数据库 还要进入inno setup 没有人能找到用户名和密码并访问我的数据库吗 我该如何解决这个问题 我
  • Android 列表视图的自定义布局

    我正在使用列表视图 如下所示 String Shows new String Dexter Breaking Bad The Big Bang Theory Leverage ListView tv show list ListView v
  • SQL Server 选择不同的最新值

    我有一个包含大量行 gt 10K 的表 大多数行都有重复role与相关的值username 我想做的是按不同和最新选择行role添加者请求ID 我几乎已经拥有了 但是让我感到不安的部分是null某些值请求ID字段 因为这些请求是在添加该列之
  • Subversion 存储库工作副本结构的最佳实践?

    我刚刚开始学习如何使用 Subversion 构建我的 Web 应用程序 所以请耐心等待 以下是我的设置方法 我的域之一将托管我所有项目的存储库 我有标准的标签 分支 主干结构 它位于公共文件夹中 因此其他开发人员可以访问它 我的实时服务器
  • React 表不包含默认导出

    我想使用react table库在react中创建一个表 版本 react table 7 0 0 rc 15 当我尝试这个时 import ReactTable from react table import react table re
  • 将 .NET Guid 转换为 MongoDB ObjectID

    如何将 NET GUID 转换为 MongoDB ObjectID 在 C 中 另外 我可以将其再次从 ObjectID 转换回相同的 GUID 吗 你无法转换ObjectId into GUID反之亦然 因为它们是两个不同的东西 不同的大
  • Android Studio 中的 appLocale 设置

    我创建了广播组 用户可以在其中选择他们想要的语言 并将应用程序语言更改为所选语言 但我无法使用这些功能 不知道如何 我做了什么 我做了settingsActivity 我添加了广播组 我写过setAppLocale功能 我已经设置了onRa
  • 创建自己的 Wordpress 循环的最佳方法是什么?

    使用其内置函数从 Wordpress 输出内容似乎有三种主要方法 WP Query作为推荐之一 WP Query http codex wordpress org Function Reference WP Query 查询帖子 http
  • symfony2 - assetic assetic:dump 命令无法正确创建样式表

    由于某种原因 我无法加载 css 文件 这是我使用的包的结构 BD WebsiteBundle public css 这是我尝试加载 css 文件的方法 stylesheets bundles bdwebsite css filter cs
  • 如何在 Android Q 中请求外部文件访问权限?

    Heard 安卓Q引入了一项新的安全功能 称为 范围存储 它限制访问外部存储中的文件 我的问题是我必须将文本文档从应用程序保存到用户指定的位置 这是否需要任何形式的许可而不是READ EXTERNAL STORAGE and WRITE E