【问题标题】:Viewing PDF (from URL) in android app within a webview intent在 webview 意图内的 android 应用程序中查看 PDF(来自 URL)
【发布时间】:2016-10-13 13:20:46
【问题描述】:

我正在尝试从我的设备/模拟器远程查看 PDF 文件。我一直在做大量的研究,并一直在寻找如何做到这一点的 stackoverflow,而无需下载 PDF 然后以这种方式查看文件。

这是尝试执行此操作的相关代码 sn-p:

if (url.contains("CreateQuoteDocument")) {
    webview.getSettings().setJavaScriptEnabled(true);
    try {
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.parse(url),"application/pdf");
        startActivity(intent);
    } catch (ActivityNotFoundException e) {
        Log.e("something went wrong", e.getMessage());
    }
}

我收到以下异常:

E/something went wrong: No Activity found to handle Intent { act=android.intent.action.VIEW ...

说到这里,我有两个问题,

  1. 为什么这不起作用?

  2. 还有其他方法吗? (虽然不使用谷歌文档)

编辑

网址格式正确,为http://www

【问题讨论】:

    标签: java android pdf webview uri


    【解决方案1】:

    试试这个:

    String myPdfUrl = "http://example.com/awesome.pdf";
    String url = "http://docs.google.com/gview?embedded=true&url=" + myPdfUrl;
    Log.i(TAG, "Opening PDF: " + url);
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.loadUrl(url);
    

    【讨论】:

    • 我特别想避免使用谷歌文档来解决这个问题,因为它只会给你有限的 URL 使用量。
    • 好的。在这种情况下,如果您可以在任何浏览器中查看您的网址,请执行以下操作:webView.loadUrl(url);
    【解决方案2】:

    为什么这不起作用?

    您尚未安装包含支持 Intent 结构的活动的应用程序(例如,application/pdf 用于 url 碰巧使用的任何方案)。

    还有其他方法吗?

    您可以安装一个包含支持Intent 结构的活动的应用程序。当然,并不是所有的用户都会有这样的应用程序,但也许你只是打算个人使用你的代码,在这种情况下,除了你之外没有其他用户。

    【讨论】:

    • 那么Adobe Acrobat reader、google chrome等浏览器等应用不支持?我至少安装了这些。
    • @Jazzbaron:Adobe Acrobat 看起来支持ACTION_VIEWhttp URL 的application/pdf。我不知道其他应用程序。您可以考虑编辑您的问题并提供完整的堆栈跟踪,包括完整的错误消息。
    • E/something went wrong: No Activity found to handle Intent { act=android.intent.action.VIEW dat=[link]http://www.beijerbygg.se/store/CreateQuoteDocument?mobile=true&catalogId=10552&quotationListId=291103&storeId=10202[link] typ=application/pdf } 这是完整的错误消息。用户确实拥有权限,因为他/她已登录。我猜这很奇怪。
    • @Jazzbaron:你可以试试setData()(或在构造函数中提供Uri)而不是setDataAndType(),看看你会得到什么结果。
    • @Jazzbaron: "尽管登录到我的应用程序" -- 除非您已通过该特定浏览器 登录,否则您很可能没有登录到应用程序,至少从该浏览器的角度来看。您的 URL 中似乎没有会话 ID,这表明用户会话是由 cookie 维护的。您的代码 sn-p 显示使用 WebView 的迹象。对于大多数(如果不是全部)Android 版本,一个应用中的 cookie 独立于任何其他应用中的 cookie。
    猜你喜欢
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多