Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

217
Visualizações
Copie el archivo abierto en el directorio de la aplicación para su uso posterior

Así que tengo una aplicación de Android que abre y muestra archivos PDF, hago que el usuario seleccione archivos PDF como este

 fun openFile() { val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply { addCategory(Intent.CATEGORY_OPENABLE) type = "application/pdf" putExtra(Intent.EXTRA_MIME_TYPES, arrayOf("application/pdf")) putExtra(DocumentsContract.EXTRA_INITIAL_URI, MediaStore.Files.getContentUri("external")) } activity?.startActivityForResult(intent, REQUEST_CODE_PDF_FILE) }

Y luego recupero el URI del resultado de la actividad, lo muestro y guardo el URI. Sin embargo, la próxima vez que se abra la aplicación, quiero abrir ese mismo archivo, ahora mismo, cuando intento abrir el URI guardado, obtengo lo siguiente:

 ava.lang.SecurityException: Permission Denial: opening provider com.android.providers.media.MediaDocumentsProvider from ProcessRecord{c3dfcb2 32587:ca.thing.testapp/u0a237} (pid=32587, uid=10237) requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs at android.os.Parcel.createExceptionOrNull(Parcel.java:2425) at android.os.Parcel.createException(Parcel.java:2409) at android.os.Parcel.readException(Parcel.java:2392) at android.os.Parcel.readException(Parcel.java:2334) at android.app.IActivityManager$Stub$Proxy.getContentProvider(IActivityManager.java:5850) at android.app.ActivityThread.acquireProvider(ActivityThread.java:6973)

Claramente, después de cerrar y volver a abrir la aplicación, ya no tengo permiso para usar ese archivo seleccionado. Así que imagino que lo que debo hacer es hacer una copia de ese archivo en algún directorio de caché en el que tenga permisos para poder mostrarlo cuando se vuelva a abrir la aplicación. ¿Cómo haría para hacer eso?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Debe tomar el permiso de uri persistente en onActivityResult para usar el uri más tarde.

No es necesario hacer una copia.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda