我有一个应用程序下载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文件的原生支持,所以我认为有两种选择:
使用一些外部库来显示PDF文件。有没有效果好?
启动Intent以显示PDF文件,但似乎存储为MODE_PRIVATE的文件无法由外部Apps打开。我找到了一些将文件复制到外部存储器然后启动Intent的解决方案,但这个程序打破了MODE_PRIVATE选项的安全性目的,对吗?
感谢您阅读
答案 0 :(得分:10)
如何打开并显示下载的PDF文件?
创建ContentProvider
以提供PDF文件,然后使用ACTION_VIEW
Intent
与Uri
ContentProvider
的{{1}}按用户选择的方式打开PDF查看器。
This sample project演示了如何从内部存储中提供PDF文件。
答案 1 :(得分:1)
要将内部存储中的文件提供给其他应用程序,最简洁的方法是使用内容提供程序。 幸运的是,Android附带FileProvider - 一个可能满足您需求的实现。 您不需要实现代码(与@CommonsWare的方法相反),您只需要在清单中指定提供程序。