Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据从Javascript传递到Android WebView_Java_Javascript_Android_Webview - Fatal编程技术网

将数据从Javascript传递到Android WebView

将数据从Javascript传递到Android WebView,java,javascript,android,webview,Java,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(Browser

我编写了一段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
    ,但不知道该代码是否会在主应用程序线程上运行


你说得对。Toast将在UI线程上运行。我只是知道这是WebView中的一个bug,这就是为什么它不起作用的原因。我有一个关于Android的Google Groups的线程,我还需要我可以将emulator从2.3版卸载回2.2版吗?请将更新的代码发送给我。提前谢谢