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

使用来自上下文提供商的数据或请求Google Photos读取权限?

斜博超
2023-03-14

我的应用允许用户从其他应用导入他们的照片和视频。现在谷歌用谷歌照片取代了谷歌照片,对我来说,有几件事发生了。其中之一就是在应用重启后重新使用导入的文件。我有一种感觉,当谷歌照片(Google Photos)用图像URI返回意图时,他们已经收紧了授予的权限,因此在我的应用程序被杀死后,它不再有访问上传文件的权限。我得到了安全预期:

java.lang.SecurityException: Permission Denial: opening provider com.google.android.apps.photos.contentprovider.MediaContentProvider from ProcessRecord{2c17ab9e 2124:com.myapp.myapp/u0a436} (pid=2124, uid=10436) that is not exported from uid 10427

编辑:

我在重用com提供的文件时也遇到了同样的问题。谷歌。Android应用程序。医生。同步。文件管理器。文件提供者

有什么建议/解决方法吗?我知道我可以在失去许可之前阅读该文件,所以理论上我可以复制它,但我不能说我非常喜欢这个。。

共有3个答案

燕翼
2023-03-14

也许您可以尝试将此用户权限添加到清单文件中。

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
向安福
2023-03-14

>

此问题的主要原因是“Google Photo”使用固定字符串(如“content://com.google.android.apps.photos.contentprovider/1/1”)共享ContentUri并将其与静态临时值连接。“Google Photo”在接收Intent的实际活动或上下文时不提供文件路径。ACTION_SEND。也许,这是“Google Photo”的策略,不将私有图像文件暴露给其他应用程序

例如,您在清单文件中定义了两个活动:活动A和活动B。活动A接收意图。行动!。用于处理图像文件的活动B。活动A将意图转发给活动B。如果活动B不是“Google Photo”的正确活动,则会遇到SecurityException。

因此,我建议您在活动A上临时保存文件,并在活动B上使用临时文件路径

饶滨海
2023-03-14

是的,这是设计的,正如Android开发者网站所描述的。

出于安全原因,权限是临时的,因此一旦客户端应用程序的任务堆栈完成,该文件将不再可访问。您必须在收到意图答案时在onActivityResult方法中获取文件数据。存储文件数据的副本,因为当onActivityResult返回时,该文件将不再可用。

 类似资料:
  • 在8之前,可以获得关于使用过的JRE的供应商的一些信息,如下所示: 自从Java9和Java模块系统的引入,上面的方法调用总是返回。 如何使用当前的Java PlattForms获得相同的信息?

  • 这是我的错误: 好了,够清楚了。我试图通过实现这个解决方案来保持请求上下文: 如何在异步任务执行器中启用请求范围 null 我已经试过了,但没有成功: 如何在异步任务执行器中启用请求范围 如果有关系: 为应用程序中的所有线程设置ThreadContext 但是上下文总是空的...

  • 我正在使用JWT和spring security来处理RESTAPIendpoint的授权。在以下示例中,endpoint提供有关用户的信息。假设我只希望管理员用户能够获得所有用户的详细信息,任何其他用户都应该只获得其帐户详细信息。有谁能想出一种更具声明性的方法来使用注释或AOP实现与以下代码等效的代码吗。

  • 这部分文档描述了在 Flask 0.7 中的行为,与旧的行为基本一致,但有细小微妙的 差异。 这里推荐先阅读 应用上下文 章节。 深入上下文作用域 比如说你有一个应用函数返回用户应该跳转到的 URL 。想象它总是会跳转到 URL 的 next 参数,或 HTTP referrer ,或索引页: from flask import request, url_for def redirect_url

  • 问题内容: 我想从具有存储为clob的XML列为testclob的表TRAPTABCLOB中使用sql提取Decision的值。 样本XML如下。 问题答案: 尝试 这是一个sqlfiddle演示

  • 我希望我的Spark应用程序(Scala)能够读取S3文件 在我的开发机器上,我可以使用awscli访问S3文件在或中预先配置的配置文件,例如: 但是当尝试从Spark读取这些文件时,使用作为env变量提供的aws_配置文件(aws_配置文件),我得到了以下错误: DoesBucket存在于我的bucket名称中:com.amazonaws.AmazonClientException:BasicA