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

READ_EXTERNAL_STORAGE是否可以根据情况在Android 11中提供不同程度的访问权限?

吴峰
2023-03-14

我有两个应用程序,它们都执行不同的操作,但都针对 sdk 版本 30,并在清单和运行时请求READ_EXTERNAL_STORAGE权限。两者都是全新的,以前未安装在设备上。

使用运行Android 11的三星手机,我随后检查了两个应用程序的权限设置,并发现了这种差异:

  • App #1 的权限设置为“仅允许访问媒体”,由于最近对存储访问的更改,这是我所期望的。但是,应用程序#2的权限设置为“允许访问以管理所有文件”。
  • 当 App #1 提示用户提供读取权限时,系统显示的消息是“允许 ____ 访问设备上的照片和媒体?但应用 #2 会提示“允许 ____ 访问设备上的照片、文件和媒体?

这可能吗?App #2绝对不会请求MANAGE_EXTERNAL_STORAGE,它们都只请求读取权限,这确实有效。但是App #2对系统文件管理器有同样的权限,这显然是不对的。

共有2个答案

索曾琪
2023-03-14

发现问题。App #2是使用androiddeployqt构建的,出于某种原因,它覆盖了我指定的目标sdk版本,所以它实际上是一个sdk级别28的应用。我强迫它瞄准正确的版本,现在它的功能和预期的一样。

艾俊悟
2023-03-14

会不会是App #2使用了一个使用MANAGE_EXTERNAL_STORAGE的库?您可以在两个应用程序构建后比较它们的AndroidManifest。它们并不总是与你自己为应用程序编写的AndroidManifest相同。库可以定义他们自己需要的权限,这些权限将被合并到最终的Android清单中

 类似资料:
  • 问题内容: 有一个Java文件,其中包含一些依赖项jar。但是现在,我没有那些jars,必须将其编译为.class文件。 是否有可能做到这一点? 更新 感谢您的回答。 起初,我认为我们可以为缺少的依赖项创建一些存根,这很简单但是很无聊。既然我们可以创建存根而不会丢失存根以使编译器满意,那么为什么我们不能使工具自动完成呢?该工具不需要创建存根,而是读取java文件,收集信息,然后构建.class文件

  • 我正在Groovy中创建一个DSL来进行Httpendpoint测试,我希望它是自然语言ish,并且我有一个带有“with”方法的对象。当我链接命令时,我的方法被正确调用,但如果在变量脚本上调用“with”方法,则编译会失败,因为使用了现有的Groovy“with(Closure)”。DSL脚本文件是通过GroovyShell读取和执行的。 这很有效: 但事实并非如此: 被调用的对象是用Java编

  • 我的Android应用程序允许用户从互联网下载zip文件。有人可以判断是否可以从应用程序本身安装zip文件?无法访问互联网。我一直在寻找机会来做这件事很长一段时间,并且已经不知所措了。 附言:谢谢回复,我开始明白了!我将我的zip文件添加到名称为“my.zip”的“原始”文件夹中,并添加了代码(如下),不幸的是手机上的文件安装没有发生,你能看到我的错误吗? 我在代码中添加了Toast并包含了Dow

  • 问题内容: 如果要使用Linq-SQL,还必须将DB Table拖到设计器表面以创建实体类。 我一直喜欢我的应用程序中的完全控制权,并且不喜欢dotnet创建的类。 是否可以使用我自己的数据访问层实体类在Linq和DB之间提供此连接? 我该如何完成? 问题答案: 您可以使用Linq-to-SQL非常轻松地编写自己的类-只需使用一些属性绘制类即可。 例如,这是我的一个项目中有一个非常简单的表,它可以

  • 下面是问题说明: 那么,如果在任务3开始后实例A被终止,会发生什么呢? B中触发的可移动脚本会完成吗?

  • 问题内容: 我处理非常大的二进制文件(每个文件从几个GB到多个TB)。这些文件以旧格式存在,并且升级需要将标头写入文件的FRONT。我可以创建一个新文件并重写数据,但是有时这可能需要很长时间。我想知道是否有更快的方法来完成此升级。该平台仅限于Linux,我愿意使用低级功能(ASM,C,C ++)/文件系统技巧来实现这一目标。基本库是Java,JNI是完全可以接受的。 问题答案: 没有本机执行此操作