Я написал фрагмент кода Java, предназначенный для вызова кода Java из Javascript через шлюз Android WebView.
webView = (WebView) findViewById(R.id.captchaView);
WebSettings ws = webView.getSettings();
ws.setJavaScriptEnabled(true);
webView.loadUrl("https://google.com/");
webView.setWebViewClient(BrowserHandler);
webView.addJavascriptInterface(new IJavascriptHandler(), "cpjs");
WebViewClient BrowserHandler = new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:window.cpjs.onPageLoaded(document.body.innerHTML);void(0);");
}
};
final class IJavascriptHandler {
IJavascriptHandler() {
}
public void onPageLoaded(String html) {
// this is called from JS
Toast t = Toast.makeText(getApplicationContext(), "Yes", 2000);
t.show();
}
}
Приведенный выше код проверяет загрузку веб-страницы, и после завершения загрузки страницы она вызывает функцию javascript, доступную из Java, чтобы она могла переносить то, что мне нужно со страницы.
Это не работает, как ожидалось, просто обновляет страницу каждые несколько секунд. Я не уверен, что здесь не так?