java - 确定 URI 是否有效并使其成为 Android for Images 上的有效文件
问题描述
我目前正在尝试将所有可能的有效 URI 转换为有效的文件,然后我可以将其通过管道传输到 Multipart.File 并上传到服务器。
我有一些我正在编写和使用的代码,但在某些情况下它会失败。另外,在这里查看我的要点:https ://gist.github.com/mmdock/ed04315851534029f5bc6ea77d6dc6e4
我正在使用的约束如下:
- 它必须与之前的 KitKat 版本一起使用
- 它必须处理真实文件(我们从 FB 或 IG 下载文件)
- 它必须处理文档 URI
- 它必须处理文档远程URI(谷歌的画廊自主决定是否上传文件,只保留拇指)
- 它最终必须提供“真实”路径,即应用程序文件夹中文件的路径
- 它必须支持第一、第二和第三代 Google 照片库 URI 和 Picasa 的权限(已被 Google 弃用,仍在其他一些提供商上使用)
- 它必须支持内容提供者(https://developer.android.com/guide/topics/providers/content-providers)
我用来编写当前代码的一些参考资料: https ://www.dev2qa.com/how-to-get-real-file-path-from-android-uri/
https://github.com/codepath/android_guides/wiki/Accessing-the-Camera-and-Stored-Media
寻找对我的代码的更正,或者希望找到与我的代码没有相同问题的第三方库。我尝试了许多第三方库(并将它们用作我的代码的参考),例如:
https://github.com/coltoscosmin/FileUtils/blob/master/FileUtils.java
https://gist.github.com/alexzaitsev/75c9b36dfcffd545c676
https://gist.github.com/tatocaster/32aad15f6e0c50311626
对不起,大量的链接。一段时间以来一直在努力纠正这个问题。
解决方案
推荐阅读
- neo4j - 使用 Python 将数据导入 Neo4j 需要时间
- sql - 如何在表和列相同的一行中获得两个不同的值
- android - 此代码如何引发 NoWhenBranchMatchedException?
- html - 背景图片将填充 2 div
- azure-active-directory - 在 $select 中指定时,组 delta 查询不返回成员
- ios - 如何在不制作 IBOutlet 的情况下以编程方式在 Swift 中为 UIView 高度约束设置动画?
- angular - 数据未从 html 传入 API
- javascript - 如何使用jquery复制备用表中的表行
- android - 在不使用 ACCESS_NETWORK_STATE 的情况下检查 Internet
- javascript - 如何在无限while循环中调用Ajax函数