Не удается получить доступ к загруженному файлу из API Google Nearby Connections в Android Q

В Android Q Payload.File.asJavaFile() возвращает значение null. Получение исключения при попытке доступа к файлу с использованием приведенного ниже подхода. Они сказали использовать Payload.asFile().asUri() в документации, однако asUri() больше не существует в библиотеке. Я использую версию 17.0.0 API подключений Google поблизости.

Мой код


override fun save(data: Payload) {
  val input = FileInputStream(data.asFile()!!.asParcelFileDescriptor().fileDescriptor));

File copy = File(context.getFilesDir(),"copy".jpg);
val out = new FileOutputStream(copy)
//using kotlin extension
input.copyTo(out)// throws android.system.ErrnoException: read failed: EBADF (Bad file descriptor)

}

Трассировки стека

Caused by: java.io.IOException: read failed: EBADF (Bad file descriptor)
        at libcore.io.IoBridge.read(IoBridge.java:519)
        at java.io.FileInputStream.read(FileInputStream.java:320)
        at java.io.FileInputStream.read(FileInputStream.java:289)
        at kotlin.io.ByteStreamsKt.copyTo(IOStreams.kt:106)
        at kotlin.io.ByteStreamsKt.copyTo$default(IOStreams.kt:103)
        at com.ume.airdrop.ui.components.file.ScopeStorage.copyFrom(ScopeStorage.kt:25)
        at com.ume.airdrop.ui.components.file.BaseStorage$save$2.invoke(BaseStorage.kt:44)
        at com.ume.airdrop.ui.components.file.BaseStorage$save$2.invoke(BaseStorage.kt:14)
        at com.ume.airdrop.ui.components.file.BaseStorage$createFunction$1.invoke(BaseStorage.kt:90)
        at com.ume.airdrop.ui.components.file.BaseStorage$createFunction$1.invoke(BaseStorage.kt:14)
        at com.ume.airdrop.ui.components.file.BaseStorage.save(BaseStorage.kt:73)
        at com.ume.airdrop.ui.service.ForegroundService.onComplete(ForegroundService.kt:96)
        at com.ume.airdrop.ui.components.p2p.DataHandler.onPayloadTransferUpdate(DataHandler.kt:48)
        at com.google.android.gms.internal.nearby.zzax.notifyListener(Unknown Source:14)
        at com.google.android.gms.common.api.internal.ListenerHolder.notifyListenerInternal(Unknown Source:17)
        at com.google.android.gms.common.api.internal.ListenerHolder$zaa.handleMessage(Unknown Source:5)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at com.google.android.gms.internal.base.zap.dispatchMessage(Unknown Source:8)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7660)
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 
     Caused by: android.system.ErrnoException: read failed: EBADF (Bad file descriptor)
        at libcore.io.Linux.readBytes(Native Method)
        at libcore.io.Linux.read(Linux.java:189)
        at libcore.io.ForwardingOs.read(ForwardingOs.java:176)
        at libcore.io.BlockGuardOs.read(BlockGuardOs.java:305)
        at libcore.io.ForwardingOs.read(ForwardingOs.java:176)

person Prodigy    schedule 13.05.2021    source источник
comment
Это очень плохой код, если вы пришли сюда за помощью, так как мы не можем скопировать/вставить его, чтобы попробовать. Никто не знает, что даст generateName(). Или пакет.mime. или получитьUri(). И так далее. Пожалуйста, перепишите.   -  person blackapps    schedule 13.05.2021
comment
я обновил код   -  person Prodigy    schedule 13.05.2021
comment
Возникает ли ошибка разрешения из FileInputStream или из FileOutputStream? Вы должны были давно опубликовать трассировку стека из logcat. Также покажите полный путь к файлу, который вы хотите скопировать. Начните свой код с него. Скопируйте и вставьте.   -  person blackapps    schedule 13.05.2021
comment
Это происходит из FileInputStream. Входной поток поступает из API подключений Google Nearby. FileInputStream(Payload.asFile().asParcelFileDescriptor().fileDescriptor)   -  person Prodigy    schedule 13.05.2021
comment
Попытка прочитать входной поток, созданный из FileDescriptor, вызывает исключение   -  person Prodigy    schedule 13.05.2021
comment
Хорошо опубликуйте полный код в своем посте. Я все время прошу показать, что ты делаешь. А если ошибку выдает именно входной поток, то почему в теме вашего поста when writing to media uri? И где трассировка стека logcat? Почему вы отказываетесь опубликовать это здесь?   -  person blackapps    schedule 13.05.2021
comment
@blackapps, пожалуйста, проверьте мой обновленный вопрос   -  person Prodigy    schedule 13.05.2021
comment
Давайте продолжим обсуждение в чате.   -  person Prodigy    schedule 13.05.2021
comment
Кто-нибудь может мне помочь???   -  person Prodigy    schedule 14.05.2021