Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

216
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!