В настоящее время я пытаюсь преобразовать все возможные действительные URI в действительный файл, который я затем могу передать в Multipart.File и загрузить на сервер.
У меня есть код, с которым я пишу и работаю, но в некоторых случаях он терпит неудачу. Кроме того, проверьте мою суть здесь: https://gist.github.com/mmdock/ed04315851534029f5bc6ea77d6dc6e4
Ограничения, с которыми я работаю, следующие:
- Работает с пре-кит-кит сборками
- Он должен обрабатывать реальные файлы (мы загружаем файлы из FB или IG)
- Он должен обрабатывать URI документа
- Он должен обрабатывать удаленный URI документа (галерея Google решает,
автономно ли загружать файлы и держать только большие пальцы)
- В конце концов, он должен обеспечить «реальный» путь, то есть путь
файл в папке приложений
- Он должен поддерживать авторитет первого, второго и третьего 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://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
Извините за большое количество ссылок. Работал над тем, чтобы исправить это некоторое время.