Я следую этому руководству с целью передачи файла изображения, который на стороне получателя должен быть загружен через API REST.
Android 10 блокирует доступ к публикации c папок, таких как папка «Загрузки», в которой все полученные файлы от API-интерфейса Nearby Connections хранятся в папке «Nearby».
File payloadFile = filePayload.asFile().asJavaFile();
У меня есть Payload
объект, и, как предполагает руководство, приведенный выше код должен получить файл. К сожалению, приведенный выше код возвращает ноль при таргетинге на API 29 и работает на устройстве Android 10. Прекрасно работает на более ранних Android версиях.
Я могу получить ParcelFileDescriptor, выполнив File payloadFile = filePayload.asFile().asParcelFileDescriptor();
, но не знаю, как получить доступ к файлу?
Через ParcelFileDescriptor
Я пытался прочитать файл следующими способами, но я всегда получить какое-либо разрешение или исключение неправильного доступа:
BitmapFactory.decodeStream(FileInputStream(payloadFileDescriptor.fileDescriptor))
или BitmapFactory.decodeFileDescriptor(payloadFileDescriptor.fileDescriptor)
Файл правильно хранится в папке «Загрузки», как я вижу, и открываю его через приложение для просмотра файлов .
Также пытался получить доступ через распознаватель контента (MediaStore.Downloads.EXTERNAL_CONTENT_URI
и MediaStore.Images.EXTERNAL_CONTENT_URI
), но не повезло.
Обратите внимание, что файлы сохраняются без расширения, поэтому, может быть, поэтому Mediastore ничего не может найти?
Я использую "com.google. android .gms: play-services-поблизости: 17.0.0".
Как уже упоминалось, я действительно хочу получить файл и загрузить его. Это абсолютно невозможно с API-интерфейсом Nearby Connections на Android 10?