微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在 Web 视图中加载 PDF 文件

如何解决无法在 Web 视图中加载 PDF 文件

我有个问题。我开发了一个带有 webview 组件的项目,但我无法在 webview 中显示 pdf 文件,因为在网站链接中,所有使用新选项卡打开的 pdf 文件和 pdf 文件都是通过用户会话进行身份验证的。我在官方 Android Chrome 应用程序上测试了此网站链接,所有 pdf 文件都被打开并自动下载到移动存储中的 PDF 文件,但在 webview 组件上我无法显示它。 请你能帮我解决这个话题吗?提前致谢。 我的代码是:

public class MainActivity extends AppCompatActivity {
private WebView webView = null;
private Button button;

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

    this.webView = (WebView) findViewById(R.id.webview);
    CookieManager.getInstance().setAcceptCookie(true);
    this.button = (Button) findViewById(R.id.button);

    webView.addJavascriptInterface(new WebAppInterface(this),"Android");
    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setDatabaseEnabled(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.getSettings().setAllowContentAccess(true);
    webView.getSettings().setDomStorageEnabled(true);
   String DESKTOP_USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/37.0.2049.0 Safari/537.36";
    webView.getSettings().setUserAgentString(DESKTOP_USER_AGENT);

    webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageStarted(WebView view,String url,Bitmap favicon) {
            super.onPageStarted(view,url,favicon);
        }

        @Override
        public void onLoadResource(WebView view,String url) {
            super.onLoadResource(view,url);
        }

        @SuppressLint("InlinedApi")
        @Override
        public boolean shouldOverrideUrlLoading(WebView view,String url) {

            CookieSyncManager.getInstance().sync();

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

                CookieManager cookieManager = CookieManager.getInstance();

                cookieManager.setAcceptThirdPartyCookies(webView,true);

            } 

                Intent intent = new Intent(Intent.ACTION_VIEW);
                Uri videoUri = Uri.parse(url);
                intent.setDataAndType( videoUri,"application/pdf" );
                intent.setPackage( "com.example.webview" );
                startActivity( intent );

            view.loadUrl(url);
                return true; // to tell the WebView that it should not load the URL because you handled it by yourself

        }
        @Override
        public void onReceivedSslError(WebView view,SslErrorHandler handler,SslError error) {
            handler.proceed(); // Ignore SSL certificate errors
        }

        @Override
        public void onReceivedError(WebView view,WebResourceRequest request,WebResourceError error) { 
            showDefaultError();
        }

        @Override
        public void onPageFinished(WebView view,true);

            } 
            super.onPageFinished(view,url);

        }
    });

webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public void onProgressChanged(WebView view,int newProgress) {

        //put your code here if your want to show the progress with progressbar
    }
});

webView.loadUrl(“MY LINK”);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。