Не удается перезагрузить пользовательский URL иногда на веб-клиент - PullRequest
0 голосов
/ 29 июня 2018

Я использую URL в веб-просмотре, когда я нажимаю на ссылку, она должна перенаправлять ее на пользовательский URL-адрес, такой как paynow: // xxxxx. Когда я использую клиент webview, он иногда приходит, а иногда не перенаправляется. Есть ли что-то не так в моем коде. пожалуйста, проверьте URL-адрес 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 блокирует всплывающее окно, которое перенаправляет на пользовательский URL добавив wv1.getSettings().setPluginState(WebSettings.PluginState.ON); получилось

Ответы [ 2 ]

0 голосов
/ 12 июля 2018

WebView блокирует всплывающее окно, которое перенаправляет на пользовательский URL, добавляя wv1.getSettings().setPluginState(WebSettings.PluginState.ON);, что работает

0 голосов
/ 29 июня 2018

Вам необходимо переместить логику в onPageStarted в функции shouldOverrideUrlLoading.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...