将存储在谷歌驱动器中的 PDF 文件显示到 WebView

Posted

技术标签:

【中文标题】将存储在谷歌驱动器中的 PDF 文件显示到 WebView【英文标题】:Display PDF file stored in google drive to 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 却不行。 【参考方案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 不适用。

以上是关于将存储在谷歌驱动器中的 PDF 文件显示到 WebView的主要内容,如果未能解决你的问题,请参考以下文章

在存储在谷歌驱动器中的谷歌 Colaboratory 中导入 zip 文件

播放存储在谷歌驱动器中的音频文件(远程 URL) - Swift

通过Google Drive API上传图片/文件

如何使用v3 rest api从google驱动器下载文件?

如何将 spatie laravel 存储的备份上传到谷歌驱动器?

如何使用 colab 在谷歌驱动器上保存 np.array?