首页 > 解决方案 > 确定 URI 是否有效并使其成为 Android for Images 上的有效文件

问题描述

我目前正在尝试将所有可能的有效 URI 转换为有效的文件,然后我可以将其通过管道传输到 Multipart.File 并上传到服务器。

我有一些我正在编写和使用的代码,但在某些情况下它会失败。另外,在这里查看我的要点:https ://gist.github.com/mmdock/ed04315851534029f5bc6ea77d6dc6e4

我正在使用的约束如下:

  1. 它必须与之前的 KitKat 版本一起使用
  2. 它必须处理真实文件(我们从 FB 或 IG 下载文件)
  3. 它必须处理文档 URI
  4. 它必须处理文档远程URI(谷歌的画廊自主决定是否上传文件,只保留拇指)
  5. 它最终必须提供“真实”路径,即应用程序文件夹中文件的路径
  6. 它必须支持第一、第二和第三代 Google 照片库 URI 和 Picasa 的权限(已被 Google 弃用,仍在其他一些提供商上使用)
  7. 它必须支持内容提供者(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://github.com/alhazmy13/MediaPicker/blob/master/libary/src/main/java/net/alhazmy13/mediapicker/FileProcessing.java

https://gist.github.com/alexzaitsev/75c9b36dfcffd545c676

https://github.com/kunpark168/EP/blob/c8cd20504a6696fc35f3e64b4bc79bbadbba76b4/eyeprotec/app/src/main/java/com/uas/eyeprotec/utils/DocumentUtil.java

https://gist.github.com/tatocaster/32aad15f6e0c50311626

https://github.com/opendatakit/collect/blob/master/collect_app/src/main/java/org/odk/collect/android/utilities/MediaUtils.java

https://github.com/Khang-NT/Android-Media-Converter/blob/16f347f7b883f854c400ba7e5ce31db4fdac2740/app/src/main/java/com/github/khangnt/mcp/util/UriUtils.java

https://github.com/esafirm/android-image-picker/blob/master/imagepicker/src/main/java/com/esafirm/imagepicker/features/ImageFileLoader.java

https://github.com/jkwiecien/EasyImage/blob/master/library/src/main/java/pl/aprilapps/easyphotopicker/EasyImage.java

对不起,大量的链接。一段时间以来一直在努力纠正这个问题。

标签: javaandroiduri

解决方案


推荐阅读