gpt4 book ai didi

java - 在 Webview 中打开 .pdf 链接

转载 作者:行者123 更新时间:2023-11-29 18:29:59 24 4
gpt4 key购买 nike

我有一个带有 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();
}
}

}

你能帮我解决一下吗?

最佳答案

当您单击指向 .PDF 的链接时, WebView 将尝试下载该文件。您真正想要做的是在外部浏览器 session 中打开文件。这将显示 PDF,如果您愿意,还可以让您选择下载它。为此,首先为您的 WebView 设置一个下载监听器。

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

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

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);
}

}

关于java - 在 Webview 中打开 .pdf 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56808737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com