将数据从Javascript传递到Android WebView

我编写了一段Java代码,旨在通过android WebView网关从Javascript调用Java代码。

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(); } } 

上面的代码检查网页加载,一旦页面加载完毕,它将调用从Java公开的javascript函数,以便它可以从页面中携带我需要的东西。

这没有按预期工作它只是每隔几秒刷新页面。 我不确定这里有什么问题?

嗯,有很多事情在你所做的事情上相当奇怪。

  • 从Java开始,您将触发Javascript …以回调Java。 你假设这是安全的。

  • 您正在加载Google主页,当我上次检查时,它将在遇到Android浏览器时执行重定向。

  • 您正在尝试显示Toast ,但您不知道该代码是否将在主应用程序线程上运行。