Android:在Android应用程序中显示PDF

时间:2017-05-22 14:11:00

标签: android webview

在应用程序中,我从API调用接收PDF,因此它位于字节数组中,我想在应用程序中显示它,而不必将其保存在用户的手机中。我尝试过WebView但它没有用。看起来像WebView将显示来自网址的PDF,但如果您将PDF作为字符串提供,则不会呈现它。

我想知道是否有办法在Android应用程序中显示PDF而无需将其保存在用户的手机中?

1 个答案:

答案 0 :(得分:1)

我这样做是将pdf文件的接收字节写入临时缓存DIR,然后用意图打开它。例如,在异步任务中,我使用doInBackground方法下载文件,并在onPostExecute中执行此操作。

@Override
protected void onPostExecute(byte[] result) {
    final File reportFile = new File(context.getExternalCacheDir(), "pdf-file.pdf");

    final BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(reportFile));
    output.write(result);
    output.close();

    Uri path = FileProvider.getUriForFile(getActivity(),  BuildConfig.APPLICATION_ID  + ".fileprovider", reportFile);
    final Intent intent = new Intent(Intent.ACTION_VIEW);

    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.setDataAndType(path, "application/pdf");
    startActivity(intent);
}

这很有效。您唯一要做的就是检查用户是否安装了正在运行的PDF阅读器。 我在这个解决方案中看到的优势是,您可以为用户提供进一步处理他或她想要的pdf的机会(例如打印,存储,共享......)。如果你只是在你的应用程序的框架中显示它,你将完全限制交互的可能性(或者必须由你自己实现它们)。