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