“所需的许可被拒绝!”请求 WRITE_EXTERNAL_STORAGE 时

2024-01-22

我正在尝试在 Android 10 上请求 WRITE_EXTERNAL_STORAGE 权限。我使用以下代码执行此操作:

ArrayList<String> permissions = new ArrayList<>();
if (this.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
    permissions.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
if (this.checkSelfPermission(ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
    permissions.add(Manifest.permission.ACCESS_COARSE_LOCATION);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q &&
        this.checkSelfPermission(ACCESS_BACKGROUND_LOCATION) != PackageManager.PERMISSION_GRANTED) {
    permissions.add(Manifest.permission.ACCESS_BACKGROUND_LOCATION);
}
if (this.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
    permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
if (permissions.size() > 0) requestPermissions(permissions.toArray(new String[0]), PERMISSION_REQUEST_FINE_LOCATION);

这是清单

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

除 WRITE_EXTERNAL_STORAGE 之外的所有其他权限均有效。当我尝试请求它时,它不会显示任何确认权限的对话框,但它只是拒绝它。为什么以及如何解决它?


我已经找到了解决方案,但问题的原因对我来说仍然是个谜。如果有人有解释,将不胜感激。基本上我的问题是这个的重复issue https://stackoverflow.com/questions/51149210/storage-access-permission-is-not-visible-in-app-info。我所要做的就是将以下行更改为

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

to

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="replace"/>

tools:node="replace" 的作用是什么?

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

“所需的许可被拒绝!”请求 WRITE_EXTERNAL_STORAGE 时 的相关文章

随机推荐

  • gcc/diab:保留未使用的函数/部分

    我有一个项目 我想在链接阶段保留某些功能 部分 I tried static void stub enforcer void attribute used 但这是针对编译器的 而不是针对链接器的 现在链接器负责并使用了 gc section
  • C/C++、FORTRAN、下划线和 GNU Autotools

    我有关于混合语言编程 C C 和 FORTRAN 的问题 使用 gcc 和 gfortran 我搜索了很多 将 fortran 与 语言 X 并且无法解决这个问题 我不确定这是链接问题还是编译器问题 或者两者兼而有之 我创建了三个文件 并使
  • 添加包含 NA 计数和平均值的列

    我有一个数据框 我需要向其中添加另一列 该列显示该行所有其他列中 NA 的计数以及非 NA 值的平均值 我认为这可以在 dplyr 中完成 gt df1 lt data frame a 1 5 b c 1 2 NA 4 NA c c NA
  • Symfony 2 嵌入式表单集合多对多

    我有 2 个实体 用户和组 它们具有多对多的关系 组用于存储用户的角色 我正在尝试通过添加集合来创建用户编辑表单 我希望能够通过从下拉列表中选择它来添加新角色 仅限于数据库中已有的内容 用户类型 php class UserType ext
  • 将 Vector 的第一个元素移动到最后一个元素

    我想将向量的第一个元素移动到向量的末尾 v 1 2 3 4 之后应该是这样的 v 2 3 4 1 我的编译器版本是gcc版本4 4 3 Ubuntu 4 4 3 4ubuntu5 1 我知道在 Vc11 中我们可以使用 std move 来
  • 使用批处理脚本重命名目录中的多个文件

    我有大约 1000 张图像 它们的名称如 IMG 12223 我想将它们重命名为 1 2 3 4 1000 我该怎么做 我编写了一个列出文件的批处理脚本 但我不知道如何重命名每个文件 例如将名称为 IMG 12223 的第一张图像重命名为
  • Rust 的方式是什么,可以用继承来捕获草书事件? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我在这里寻找一个实用的答案 我了解 Rust 的 OOP 方法 组合优于继承 编写重用代码的特征以及所有这些爵士乐 如果我能够完全控制代码并
  • EF代码优先级联删除外键一对多

    我们正在使用实体框架代码优先 我们有一个课堂视频 class Video List
  • 乘客 config.ru 权限被拒绝

    有人在rails nginx passenger的组合下经历过ERR EMPTY RESPONSE吗 nginx error log 说 terminate called after throwing an instance of Pass
  • Android:如何模拟后退按钮

    目前我的活动允许用户填写某些数据 包括微调器等 当用户单击下一个系统时 系统导航到另一个屏幕 当我按下手机上的后退按钮时 之前加载和填充的数据即可使用 我的要求要求我在用户界面中提供一个软 后退 按钮 当用户单击它时 它会导航回上一屏幕 但
  • QEventLoop正确使用

    我有疑问应该如何使用QEventLoop 我有两段代码 它们都适合我 下载网络资源 第一 QNetworkAccessManager manager new QNetworkAccessManager this QNetworkReques
  • GWT 将脚本元素注入 html 文件

    在我的 gwt 项目上 我有一个调用字典的脚本 而不是将此脚本元素写入 html 文件中 我想在模块加载时将其从入口点注入到 html 中 我该怎么做 Use com google gwt core client ScriptInjecto
  • 各个版本的 MSVC 功能列表?

    我正在尝试找到一个列表MSVC具有它们出现的相应版本的功能 因此我可以执行以下操作 if defined MSC VER MSC VER gt X define MY INLINE forceinline else define MY IN
  • XCode 4.3.1 iPad 模拟器

    有谁知道为什么 iPad 模拟器缺少主页按钮 Its a simple redesign to make more space for the simulator screen You can trigger the home button
  • 使用 BeautifulSoup 获取日期

    我对 Python 很陌生 我正在尝试抓取网站以获取信息 主要是文本 但我遇到了日期问题 它看起来像这样
  • 针对 Boost.Log 的 g++ 静态链接错误

    静态链接 Boost Log 时出现链接错误 编译器版本是g 4 8 1 Boost版本是1 55 0 我可以毫无问题地进行动态链接 在 make 文件中使用 DBOOST LOG DYN LINK 但是当我进行静态链接时 会出现链接错误
  • 如何处理 JSON_VALUE 路径中的美元 ($) 符号

    我们将数据作为 JSON 字符串存储在数据库中 由于使用 Newtonsoft JSON 此数据包含键中带有 符号的字段 是否可以使用MSSQL中的JSON VALUE函数查询这些字段 我尝试的查询抛出异常JSON 路径格式不正确 在位置
  • 如何使用 Silex 框架实现自定义身份验证成功处理程序?

    我想在用户登录时跟踪一些数据 成功和失败 但我真的不知道该怎么做 防火墙看起来像这样 app gt register new Silex Provider SecurityServiceProvider array security fir
  • 使用Spring事务管理“Propagation.REQUIRES_NEW”到底意味着什么?

    我与此事相关的困惑是我们如何使用之前创建的交易 或者换句话说 一个事务可以与多少个线程相关 在 Spring 中 一笔事务只能与一个线程相关 好吧 通过一些努力 您可以使其成为一个长期运行的事务 但这是一种反模式 REQUIRES NEW意
  • “所需的许可被拒绝!”请求 WRITE_EXTERNAL_STORAGE 时

    我正在尝试在 Android 10 上请求 WRITE EXTERNAL STORAGE 权限 我使用以下代码执行此操作 ArrayList