[英]Opening a .pdf link in a Webview
我有一個帶有 web 視圖的簡單應用程序。 每次頁面上有 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 將嘗試下載該文件。 您真正想要做的是在外部瀏覽器會話中打開文件。 這將顯示 PDF,如果您願意,還可以讓您選擇下載它。 為此,首先為您的 webview 設置一個下載偵聽器。
//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);
}
}
嘗試通過谷歌文檔服務打開它:
WebView webView = (WebView) context.findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.loadUrl("http://docs.google.com/gview?
embedded=true&url=yourUrl");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.