Android 的 FileProvider 是否真的支持外部文件路径?
Does Android's FileProvider actually support external-files-path?
我已经 运行 进入 FileUriExposedException 的东西,你试图将 file:/// Uri 发送到另一个应用程序(在本例中是相机),我应该改用 FileProvider(原因api 24 牛轧糖崩溃。
在我们的应用中,我们使用 Context 的 getExternalFilesDir(String)
方法生成一个文件:
context.getExternalFilesDir("attachments");
FileProvider documentation 让我相信我应该在 paths.xml
中使用 external-files-path
如果我希望功能与现在相同。
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-files-path
name="attachments"
path="attachments/" />
</paths>
但是在谷歌搜索更多之后,我发现了一些让我觉得 FileProvider 或至少 FileProvider 的文档存在问题的东西...
- https://code.google.com/p/android/issues/detail?id=61170
- @commonsWare
回答和评论
- 这个活动库的自述文件说它增加了对
external-files-dir
https://github.com/commonsguy/cwac-provider#metadata-elements 的支持
- 此外,我现在
java.lang.IllegalArgumentException: Failed to find configured root that contains ...
,但这可能是由其他原因引起的。
所以
- 如果我想匹配我的应用当前的工作方式,我认为应该使用
external-files-path
是否正确?
- documentation/FileProvider 真的是 broken/incorrect 吗?我应该用 cwac-provider 之类的东西代替吗?
更新
为了完整起见,正如@CommonsWare 在下面推荐的那样,使用 support-v4
的 24.2.0 版本对我有用。
Am I right in thinking I should use external-files-path if I want to match how my app currently works?
是的。尽管请注意 getExternalFilesDir()
does not officially support "attachments"
as a parameter,所以如果有一天您的应用出现故障,请不要感到惊讶。
Is the documentation/FileProvider really broken/incorrect
好吧,我在新 support-core-utils
工件的 24.2.0 源 JAR 中看到 external-files-path
支持的代码。 support-v4
,截至 24.2.0,已细分为一系列独立的工件,FileProvider
位于 support-core-utils
。
因此,请尝试使用 support-v4
的 24.2.0(如果不需要全部 support-v4
,则尝试使用 support-core-utils
)。
我有过类似的情况,即在未获得 WRITE_EXTERNAL_STORAGE.
许可的情况下,将私人文件共享到相机以上传完整质量的图像
我能够通过使用 来实现它
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="my_images"
path="Android/data/com.santhoshn.appprivateimageupload/files/Pictures" />
</paths>
我已经 运行 进入 FileUriExposedException 的东西,你试图将 file:/// Uri 发送到另一个应用程序(在本例中是相机),我应该改用 FileProvider(原因api 24 牛轧糖崩溃。
在我们的应用中,我们使用 Context 的 getExternalFilesDir(String)
方法生成一个文件:
context.getExternalFilesDir("attachments");
FileProvider documentation 让我相信我应该在 paths.xml
中使用 external-files-path
如果我希望功能与现在相同。
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-files-path
name="attachments"
path="attachments/" />
</paths>
但是在谷歌搜索更多之后,我发现了一些让我觉得 FileProvider 或至少 FileProvider 的文档存在问题的东西...
- https://code.google.com/p/android/issues/detail?id=61170
- @commonsWare 回答和评论
- 这个活动库的自述文件说它增加了对
external-files-dir
https://github.com/commonsguy/cwac-provider#metadata-elements 的支持
- 此外,我现在
java.lang.IllegalArgumentException: Failed to find configured root that contains ...
,但这可能是由其他原因引起的。
所以
- 如果我想匹配我的应用当前的工作方式,我认为应该使用
external-files-path
是否正确? - documentation/FileProvider 真的是 broken/incorrect 吗?我应该用 cwac-provider 之类的东西代替吗?
更新
为了完整起见,正如@CommonsWare 在下面推荐的那样,使用 support-v4
的 24.2.0 版本对我有用。
Am I right in thinking I should use external-files-path if I want to match how my app currently works?
是的。尽管请注意 getExternalFilesDir()
does not officially support "attachments"
as a parameter,所以如果有一天您的应用出现故障,请不要感到惊讶。
Is the documentation/FileProvider really broken/incorrect
好吧,我在新 support-core-utils
工件的 24.2.0 源 JAR 中看到 external-files-path
支持的代码。 support-v4
,截至 24.2.0,已细分为一系列独立的工件,FileProvider
位于 support-core-utils
。
因此,请尝试使用 support-v4
的 24.2.0(如果不需要全部 support-v4
,则尝试使用 support-core-utils
)。
我有过类似的情况,即在未获得 WRITE_EXTERNAL_STORAGE.
许可的情况下,将私人文件共享到相机以上传完整质量的图像我能够通过使用 来实现它
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="my_images"
path="Android/data/com.santhoshn.appprivateimageupload/files/Pictures" />
</paths>