【问题标题】:Display PDF file stored in google drive to WebView将存储在谷歌驱动器中的 PDF 文件显示到 WebView
【发布时间】:2018-07-23 08:14:31
【问题描述】:

我的应用看起来像: My app screen

这是我的 webview 代码:

private String myPdfUrl = "https://drive.google.com/open?id=1rquwQNdXeds39Rlb32isX3bjYghHitCV";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    init();

    webView.getSettings().setJavaScriptEnabled(true);

    webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            view.loadUrl(myPdfUrl);
            return true;
        }
    }
    );
    webView.loadUrl(myPdfUrl);

}

我的问题是:当我使用 API 19,21 在 Genymotion 中运行时,它可以工作。但在 API 25 中,WebView 只显示白屏。

My app screen 2

【问题讨论】:

  • WebViews 无法显示 pdf 文件。
  • 我不知道它如何与 api 19 一起工作。但 api 25 却不行。

标签: android pdf webview


【解决方案1】:

转身

private String myPdfUrl = "https://drive.google.com/open?id=1rquwQNdXeds39Rlb32isX3bjYghHitCV";

进入

private String myPdfUrl = "https://drive.google.com/file/d/1rquwQNdXeds39Rlb32isX3bjYghHitCV/view";

因为 Google 正在将您重定向到另一个网址。

编辑:

在您的onCreate() 上方添加@SuppressLint("SetJavaScriptEnabled")

//...
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
//...

你必须抑制那个 Javascript 安全问题:)

【讨论】:

  • 谢谢!但我尝试了两个字符串。它适用于 api 19,但 api 25 不适用。
猜你喜欢
  • 1970-01-01
  • 2023-02-06
  • 2018-09-11
  • 2015-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多