有时无法在webviewclient上重新加载自定义URL

时间:2018-06-29 12:28:49

标签: java android android-webview

我在Web视图中使用URL,当我单击链接时,应将其定向到自定义URL,例如paynow:// xxxxx。 当我使用webview客户端时,它有时会出现,并且有时不会重定向。 我的代码有什么错误吗? 请检查网址onPageStarted和shouldOverrideUrlLoading

protected void onCreate(@Nullable Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                context=this;
                MainApplication.getComponent(this).inject(this);
                back=findViewById(R.id.back_w);
                front=findViewById(R.id.right_w);
                wv1=(WebView)findViewById(R.id.webview);
                wv1.getSettings().setLoadsImagesAutomatically(true);
                wv1.getSettings().setJavaScriptEnabled(true);
               wv1.setWebViewClient(new MyBrowser());
               wv1.setWebChromeClient(new WebChromeClient());
                wv1.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
                wv1.loadUrl(Constants.Load_url);
            }

         private class MyBrowser extends WebViewClient {


                   @Override
                    public boolean shouldOverrideUrlLoading(WebView view, String url) {
                        view.loadUrl(url);
                        return true;
                    }

                    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
                    @Override
                    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {


                        final Uri uri = request.getUrl();
                        return super.shouldOverrideUrlLoading(view, uri.toString());
                    }

                    @Override
                    public void onPageStarted(WebView view, String url, Bitmap favicon) {
                        super.onPageStarted(view, url, favicon);

                        if (url.startsWith("paynow://"))
                        {
                            if (url.contains("order"))
                            {
                                startActivityForResult(new Intent(context,TipsActivity.class).putExtra("url",url),1);
                            }
                        }
                    }

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

                    }

                    @Override
                    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
                        super.onReceivedError(view, request, error);
                        wv1.setVisibility(View.GONE);

                    }


                }

答案: WebView阻止弹出窗口重定向到自定义网址 通过添加wv1.getSettings().setPluginState(WebSettings.PluginState.ON);可以有效

2 个答案:

答案 0 :(得分:1)

您需要将onPageStarted中的逻辑移至shouldOverrideUrlLoading函数中。

答案 1 :(得分:0)

WebView通过添加有效的wv1.getSettings().setPluginState(WebSettings.PluginState.ON);来阻止重定向到自定义网址的弹出窗口