Cómo abrir un PDF almacenado en la memoria interna

Tengo una aplicación que descarga un archivo PDF y lo almacena con MODE_PRIVATE (por motivos de seguridad) en la memoria interna de la aplicación:

FileOutputStream fos = getApplicationContext().openFileOutput(LOCAL_FILE_NAME, Context.MODE_PRIVATE); InputStream inputStream = entity.getContent(); byte[] buffer = new byte[1024]; int bufferLength = 0; while((bufferLength = inputStream.read(buffer)) > 0) { fos.write(buffer, 0, bufferLength); } fos.close(); 

¿Cómo puedo abrir y mostrar el archivo PDF descargado? He estado buscando en StackOverflow y no he encontrado una solución clara para esto.

Parece que el problema es que Android no tiene soporte nativo para abrir archivos PDF, así que creo que hay dos opciones:

  1. Utilice alguna biblioteca externa para mostrar archivos PDF. ¿Hay alguna que funcione bien?

  2. Inicie un intento de mostrar el archivo PDF, pero parece que los archivos almacenados como MODE_PRIVATE no pueden ser abiertos por aplicaciones externas. He encontrado algunas soluciones que copia el archivo a la memoria externa y entonces lanza el intento, pero este procedimiento rompe el propósito de la seguridad de la opción MODE_PRIVATE, ¿verdad?

Gracias por leer

¿Cómo puedo abrir y mostrar el archivo PDF descargado?

Crear un ContentProvider para servir el archivo PDF, a continuación, utilice un ACTION_VIEW Intent con el Uri a su ContentProvider para abrirlo en el usuario elegido PDF visor.

Este proyecto de ejemplo muestra cómo servir un archivo PDF desde el almacenamiento interno.

Para que un archivo del almacenamiento interno esté disponible para otras aplicaciones, el enfoque más limpio es utilizar un proveedor de contenido. Por suerte, Android viene con FileProvider – una aplicación que podría servir a sus necesidades. No es necesario implementar código (contrariamente al enfoque de @ CommonsWare), sólo tiene que especificar el proveedor en su manifiesto.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.