WebView с Javascript продолжают загружаться - PullRequest
1 голос
/ 26 сентября 2019

Я использую WebView для отображения веб-сайта в моем приложении.Когда я загружаю свой WebView, мне сначала нужно заполнить форму аутентификации, а затем перенаправить на исходный URL.

Мой WebView продолжает перезагружаться снова и снова.Может ли кто-нибудь объяснить мне, как использовать WebView с «автоматическим» заполнением, пожалуйста?

        final WebView mWebView;

        //Show webview into the app via a popup
        AlertDialog.Builder mAlertDialog = new AlertDialog.Builder(context);
        mAlertDialog.setTitle(R.string.menuBuyCredit);

        mWebView = new WebView(context);
        mWebView.getSettings().setDomStorageEnabled(true);
        mWebView.getSettings().setJavaScriptEnabled(true);

        mWebView.loadUrl(ConstantsClass.URL_BUY_CREDIT);

        mWebView.setWebViewClient(new WebViewClient() {


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

                //In order to automatically fill the form
                final String mJavaScript = "javascript:" +
                        "document.getElementById('Login').value = '" + ClientSingleton.getInstance().getmLogin() + "';" +
                        "document.getElementById('Password').value = '" + ClientSingleton.getInstance().getmPassword() + "';" +
                        "document.getElementById('Btn_Envoyer').click()";

                view.loadUrl(mJavaScript);
                view.loadUrl(ConstantsClass.URL_BUY_CREDIT);
                view.pageDown(true);
            }

        });

        mAlertDialog.setView(mWebView);
        mAlertDialog.setNegativeButton(R.string.closeDrawer, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                dialogInterface.dismiss();
            }
        });

        mAlertDialog.show();
    } ```

1 Ответ

1 голос
/ 26 сентября 2019

Вы должны использовать что-то вроде

Поместите это в глобальный

boolean loadedAlready = false;

внутри onPageFinished метод

if (view.getUrl().equals(ConstantsClass. URL_BUY_CREDIT) && !loadedAlready) { 
    loadedAlready= true; 
    view.load(ConstantsClass.URL_BUY_CREDIT);
 } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...