如何打开存储在内部存储器中的PDF

时间:2013-01-14 21:47:55

标签: android

我有一个应用程序下载PDF文件,并将其与MODE_PRIVATE(出于安全目的)一起存储在应用程序的内部存储器中:

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();

如何打开并显示下载的PDF文件?我一直在StackOverflow中搜索,但我还没有找到明确的解决方案。

似乎问题是Android没有打开PDF文件的原生支持,所以我认为有两种选择:

  1. 使用一些外部库来显示PDF文件。有没有效果好?

  2. 启动Intent以显示PDF文件,但似乎存储为MODE_PRIVATE的文件无法由外部Apps打开。我找到了一些将文件复制到外部存储器然后启动Intent的解决方案,但这个程序打破了MODE_PRIVATE选项的安全性目的,对吗?

  3. 感谢您阅读

2 个答案:

答案 0 :(得分:10)

  

如何打开并显示下载的PDF文件?

创建ContentProvider以提供PDF文件,然后使用ACTION_VIEW IntentUri ContentProvider的{​​{1}}按用户选择的方式打开PDF查看器。

This sample project演示了如何从内部存储中提供PDF文件。

答案 1 :(得分:1)

要将内部存储中的文件提供给其他应用程序,最简洁的方法是使用内容提供程序。 幸运的是,Android附带FileProvider - 一个可能满足您需求的实现。 您不需要实现代码(与@CommonsWare的方法相反),您只需要在清单中指定提供程序。