在Webview中打开.pdf链接

时间:2019-06-28 14:28:22

标签: java android webview android-webview

我有一个带有网络视图的简单应用。 每次页面上有PDF链接时,单击后均无反应。 我目前正在扼杀pdf链接,无论如何他们都不会打开。我尝试了一些解决方案,但是它们只是过时了。

这是我的代码:

package com.example.bla;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;



import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

public class MainActivity extends AppCompatActivity {

    private WebView webView = null;


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

        webView=findViewById(R.id.webviewid);
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        webSettings.setDomStorageEnabled(true);
        webSettings.setPluginState(WebSettings.PluginState.ON);
        webSettings.setAllowFileAccess(true);
        webSettings.setLoadWithOverviewMode(true);
        webSettings.setUseWideViewPort(true);
        webSettings.setAllowUniversalAccessFromFileURLs(true);

        webView.setWebViewClient(new WebViewClient());
        webView.loadUrl("https://blabla.com");

    }


    public void onBackPressed() {
        if (webView.canGoBack()) {
            webView.goBack();
        } else {
            super.onBackPressed();
        }
    }

    }

您能帮我解决一个问题吗?

2 个答案:

答案 0 :(得分:0)

尝试通过Google文档服务打开它:

{
    loop: true,
    initialSlide: 0, //this one accept a number according to docs
    slidesPerView: 1, //number or 'auto'
    slidesPerColumn: 1 //number
}

Read more

答案 1 :(得分:0)

当您单击指向.PDF的链接时,Web视图将尝试下载文件。您真正想要做的是在外部浏览器会话中打开文件。这将显示PDF,也可以根据需要选择下载。为此,请首先为您的网络视图设置一个下载侦听器。

    //for download PDF files
    webView.setDownloadListener(new MyDownLoadListener());

然后,在下载侦听器中,将PDF链接发送到外部浏览器会话:

public class MyDownLoadListener implements DownloadListener {
    @Override
    public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {

    if (url != null) {
        Intent i = new Intent(Intent.ACTION_VIEW);
        i.setData(Uri.parse(url));
        startActivity(i);
    }

}