问题标签 [android-fileprovider]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1525 浏览

android - 如何使用 FileProvider 通过意图授予提供多个 URI 的权限

我正在尝试在从一个应用程序到另一个应用程序Intent的帮助下通过 an 提供多个 URI。FileProvider

当只发送一个如下 URI 时,我得到了它的工作:

在我的“接收”应用程序中,我可以继续这样onActivityResult

现在我尝试发送一个ArrayListURI:

但是授予的权限标志仅适用于 中设置的 URI setData(),因此我无法从接收应用程序中的 ArrayList 访问 URI。我阅读了有关 ClipData 作为解决方案的信息,但不幸的是,我不得不使用 Min SDK 15。

所以我的问题是,在我的接收应用程序中手动设置权限是一个好主意吗?

如果我选择“ArrayList”选项并在以后撤销它,我会得到每个 URI?我可以这样做吗?难道其他所有应用程序都不能像那样访问提供商应用程序的私人文件吗?

我必须在这里指定什么包?我的提供者应用程序或我的接收者应用程序包,因为我没有让它工作,并且只得到一些关于缺少权限的异常。

任何帮助或提示表示赞赏

0 投票
1 回答
1222 浏览

android - 将内容 URI 与 ACTION_VIDEO_CAPTURE 一起使用

我目前在我的文件提供程序上使用内容 URI 来检索ACTION_IMAGE_CAPTURE意图返回的相机图像。这工作正常。

出于某种奇怪的原因,尝试从相机中检索视频文件时,相同的调用不起作用。

当意图返回时onActivityResult(),destinationFile 为空。

简单地替换MediaStore.ACTION_VIDEO_CAPTUREMediaStore.ACTION_IMAGE_CAPTURE我预期的行为:捕获的图像保存在destinationFile中。

这发生在 Nexus 设备和默认的 Google 相机应用上的原生 Android 6.0.1 上。

视频捕获真的不支持内容 URI 吗?我宁愿不在可公开访问的目录中使用文件 URI。

0 投票
2 回答
1121 浏览

android - Android FileProvider 将 URI 传递给 Notification 的问题

我对 Android FileProvider 有奇怪的问题。我有文件由 Retrofit 2 下载并写下来做 InternalStorage(安全原因),然后我为这个文件创建 URI 并将其传递给 Intent。从这个意图我正在创建传递给通知的 PendingIntent。目标是通过单击通知打开文件。到目前为止,一切都很好。

问题是使用下面列出的代码尝试几次我发生了SecurityException。现在在 logcat 中我看不到任何错误和异常,但文件似乎是空的(文件已正确下载 - 我通过相同的方法写入外部公共目录来检查它)。这是 pdf 文件,我的视图只是查看器中的文件名和黑色内容。

我用于创建 uri 和传递意图的代码:

显现:

文件路径:

通知:

0 投票
1 回答
3029 浏览

android - 如何从whatsapp fileprovider获取txt文件

我试图获取 whatsapp 聊天 txt 文件。正如我在 Android 文档中看到的:

uri是:

但我不能使用 f 文件,因为该路径中不存在文件。

我已经在清单中打开了权限:

我应该怎么做才能使用该文件?

0 投票
0 回答
455 浏览

android - DownloadMnager setDestinationUri() 到外部私有缓存目录

我注意到这个线程也证实了一个行为:

似乎Android的方法允许从android 6及更高版本在未经许可的情况下在私有外部缓存目录DownloadMnager.setDestinationUri()中指定目标:WRITE_EXTERNAL_STORAGE

虽然调用此行会引发异常,表明WRITE_EXTERNAL_STORAGE需要许可,但它在运行 android 6 及更高版本的设备上完美运行(在 Nexus 5 运行、Nexus 5X 和 HTC 10 上确认)

我想依靠这种行为,而不是在 android 6 及更高版本上使用 WRITE_EXTERNAL_STORAGE,但由于我没有看到任何文档表明这确实是一种新行为,所以我不敢这样做。

所以我的问题是:

android 6后的android行为真的允许在没有任何许可的情况下将目标设置为这种私有存储吗?

0 投票
1 回答
943 浏览

android - PackageManager#installPackage 不适用于 Android N

当使用构建工具版本 24 和带有 N 映像 (npd56n) 的 Android 设备时,我无法使用 PackageManager#installPackage 安装包。

当带有方案的 URIfile:传递给方法时,返回 -3,我假设它是INSTALL_FAILED_INVALID_URI

当使用 FileProvider ( content:scheme) 创建的 URI 传递给方法时,会引发异常:

有任何想法吗?

0 投票
3 回答
21227 浏览

android - 文件提供程序错误

https://developer.android.com/training/camera/photobasics.html

我要做的就是用相机拍照,保存并在 ImageView 中显示。

我按照上面的 android 教程进行操作,并不断收到错误消息(NullPointerException):

我知道我需要在我的应用程序清单中配置FileProvider并且“权限”必须匹配。我不太明白我应该在当局的论点中提出什么。我复制了教程中的所有代码,包括文件 res/xml/file_paths.xml。如有必要,请提出任何问题。

谢谢!

0 投票
2 回答
13196 浏览

android - Android 使用 FileProvider 拍照

我正在使用 FileProvider 在 Android Nougat 上拍照,这是我的代码

文件路径.xml:

爪哇:

相机活动开始,拍照成功,但活动结果不正常,我在错误日志中看到的唯一内容是

CAM_StateSavePic:将结果保存到 URI 时出现异常:Optional.of(content://com.mypackage.fileprovider/img/cameraOutput1469383289530.jpg) FileNotFoundException:是目录

编辑 错过 File#createNewFile();

0 投票
0 回答
329 浏览

android - FileProvider 共享数据 - 客户端检查 uri 权限

我知道类似的问题已经在这里被问过好几次了,但我正在寻找一种解决方法。

考虑到“分享”功能。Google Photos 和其他应用程序为接收应用程序组件(即注册为共享接收器的已启动活动)授予 uri 权限。我的“共享接收器”需要将数据保存到磁盘,因此将 uri 交给处理后台保存的服务。然而,这就是令人讨厌的地方。当最初授予权限的活动死亡/不在前台时,uri 权限被撤销,服务在尝试访问数据时抛出 Securiy 异常。

我的标准方法是保持活动活跃,因为我还没有找到任何解决方法。但是,我没有任何指标(除了根据我的经验列出的“坏”提供者列表)来检查是否需要这样做,因为我不希望活动需要为所有文件保持活动状态。

TLDR: 所以:有没有办法

  • a) 将 uri 权限“转移”到后台服务以避免活动保持活动解决方法
  • 或 b) 检查当前上下文是否具有权限/哪些组件有权访问/需要保持活动状态......等等。

提前致谢!

0 投票
0 回答
499 浏览

android - Android 应用程序目录结构,来自内部存储的电子邮件文件

我有个问题。我目前正在将 pdf 文件保存在内部存储 /data/user/0/com.thatapp.myApp/files/JP_31072016065930.pdf

通过应用程序阅读它不是问题,所以我很肯定它存在。我现在正在尝试通过电子邮件发送文件。从这里的其他问题和答案中,我了解到您需要使用文件提供程序。

所以我在清单中添加了以下内容

@xml/文件路径包含

我的发送电子邮件功能如下

文件记录为 /data/user/0/com.thatapp.contract/files/OTP_JP_31072016065930.pdf

当我运行代码时,我遇到了异常

因此,如果根据我的理解 /data/user/0/ == /data/data/ ,那么导致问题的原因是什么?我的文件路径错了吗?我也尝试将“files/”作为文件路径中的路径,但遇到了同样的问题。请帮助.... 已经盯着问题 24 小时