安卓WebView无法加载/打开PDF

4

我的Webview正在加载Google Chrome。当用户浏览Webview应用程序时,他可以导航到任何链接,这是正常工作的。但是当用户导航到包含PDF的链接时,我的Webview无法打开或下载该文件。我该如何解决?

public class WebViewPage extends AppCompatActivity {
WebView webView;
Button closeweb;

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

    webView =findViewById(R.id.webview);
    closeweb = findViewById(R.id.closeweb);
    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);


     webView.setWebViewClient(new WebViewClient());

    webView.loadUrl("https://www.google.in");
     closeweb.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(WebViewPage.this, HomePage.class);
            startActivity(intent);
        }
    });

}
@Override
public void onBackPressed() {

}

} enter image description here

2个回答

2

或者如果您想打开PDF或任何其他格式,如XLSX等...,您可以使用以下方法:

@Override
public boolean shouldOverrideUrlLoading(WebView webView, String url) {
    webView.loadUrl(url);
    if (url.endsWith(".pdf") || url.endsWith(".xlsx") || url.endsWith(".xls") || url.endsWith(".doc") || url.endsWith(".docx") || url.endsWith(".ppt") || url.endsWith(".pptx")) {
        webView.loadUrl("https://docs.google.com/gview?embedded=true&url=" + url);
       
        return true;
    }
    return false;
}

这将使用谷歌的服务来打开任何类型的文件(由谷歌文档支持)。


无法加载网页... net::ERR_CLEARTEXT_NOT_PERMITTED - Abm
更改HTTP为HTTPS是有效的,但它无法在Google Chrome中加载着陆页。我已经分享了截图。 - Abm
@Abm 我已经编辑了答案。请现在检查一下。 - Sambhav Khandelwal

1

这对我有效,我能够成功打开PDF文件。

@Override
public boolean shouldOverrideUrlLoading(WebView webView, String url) {
    webView.loadUrl(url);
    if (url.endsWith(".pdf") || url.endsWith(".xlsx") || url.endsWith(".xls") || url.endsWith(".doc") || url.endsWith(".docx") || url.endsWith(".ppt") || url.endsWith(".pptx")) {
        activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
       
        return true;
    }
    return false;
}

1
但是,这不会在webView中打开它。它将为此打开另一个PDF打开器应用程序! - Sambhav Khandelwal
@ Sambhav Khandelwal - 是的。 - Abm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接