Как мы можем запустить функцию, когда веб-сайт отвечает или изменяет свою страницу в веб-представлении? - PullRequest
0 голосов
/ 17 июня 2019

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

private WebView webView;частный ProgressBar progressXml;private RelativeLayout WaitPageXml;// страница ожидания для приватного пользователя RelativeLayout NoInternetPage; // страница для отображения отсутствия связи для вас* webView.setWebViewClient (новый WebViewClient () {

            @Override
            public void onPageStarted(WebView view, String url, Bitmap 
            favicon) {
                if (isOnline()) {
                    progressXml.setVisibility(View.VISIBLE);
                    WaitPageXml.setVisibility(View.VISIBLE);
                    super.onPageStarted(view, url, favicon);

                } else {
                    super.onPageStarted(view, url, favicon);
                    NoInternetPage.setVisibility(View.VISIBLE);
                }


            }

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

                progressXml.setVisibility(View.GONE);
                WaitPageXml.setVisibility(View.GONE);
                NoInternetPage.setVisibility(View.GONE);

        });

webView.loadUrl ("https: // ......");

@Override
public void onBackPressed() {

    if (webView.canGoBack()) {
        webView.goBack();
    } else {
        super.onBackPressed();

    }

}

публичный логический isOnline () {// для проверки соединения .... ConnectivityManager cm = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE); @SuppressLint ("MissingPermission") NetworkInfo netInfo = cm.getActiveNetworkInfo (); if (netInfo! = null && netInrConConis.Connect)()) {return true;} else {return false;}}

к сожалению, ответ не был выполнен сайтом

1 Ответ

0 голосов
/ 18 июня 2019

У меня возникли некоторые затруднения, когда я точно говорю, что вы хотите от своего вопроса, но, исходя из того, как я его интерпретирую, вам нужно нажать кнопку на веб-странице, чтобы вызвать какое-то обновление пользовательского интерфейса (всплывающее окно, поле обновление и т. д.). Есть несколько разных способов сделать это, и я не совсем уверен, какое решение является лучшим для того, чего вы пытаетесь достичь.

Однако, учитывая, что вы опубликовали этот вопрос как вопрос для Android и предоставили список источников, включающий вашу работу по настройке веб-представления, я предполагаю, что вы ищете способ подключить нажатие кнопки со страницы HTML для некоторого обратного вызова Java. Если это так, то вы уже на полпути. Когда вы вызываете webView.addJavascriptInterface(new MyJavaScriptInterface(), "android");, это вставляет экземпляр MyJavaScriptInterface в качестве глобальной переменной JavaScript.

У вас нет вашей реализации MyJavaScriptInterface в списке, поэтому давайте предположим, что это класс, объявленный с аннотацией JavascriptInterface, предназначенный для передачи в addJavascriptInterface. Аннотация класс с JavascriptInterface предоставляет свои открытые методы JavaScript. Допустим, ваш класс объявлен так:

@JavascriptInterface
class MyJavaScriptInterface {
    public void doSomething() {
        Log.d("MyJavaScriptInterface", "Got a callback from JavaScript");
    }
}

Поскольку вы добавили экземпляр этого класса с именем «android» при настройке WebView, теперь вы можете вызывать нашу doSomething функцию в JavaScript с помощью android.doSomething(). Например, предположим, что это HTML-код, который загружается при вызове webView.loadUrl("https://......");:

<html>
    <head>
        <script>
            function onButtonPressed() {
                android.doSomething();
            }
        </script>
    </head>
    <body>
        <button onclick="onButtonPressed();">Click me!</button>
    </body>
</html>

В этом случае нажатие кнопки на странице вызовет весь путь до doSomething в классе Java. Оттуда вы можете делать все, что вам нужно, чтобы отобразить вашу информацию. Обратите внимание, что doSomething не должно быть пустотой; он также может возвращать данные, если вам нужно отобразить информацию, которая должна обрабатываться JavaScript, но извлекается изнутри.

Для получения дополнительной помощи вы можете обратиться к руководству по Android для разработчиков по этой теме здесь .

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