Passing Data From Javascript To Android WebView
Asked Answered
J

1

5

I have written a piece of Java code which is intended as to call Java code from Javascript by a android WebView gateway.

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

The above code checks for web page load and once the page is finished loading, it will call javascript function which is exposed from Java so it could carry what I need from the page.

This is not working as expected what it does is simply refresh the page every few seconds. I am not sure what is wrong here?

Joachim answered 5/2, 2011 at 9:46 Comment(1)
will you please send me the updated code. thanks in advanceUnrefined
R
2

Well, there are lots of things that are rather strange in what you have done.

  • From Java, you are triggering Javascript...to call back into Java. You are assuming this is safe.

  • You are loading the Google home page, which will perform a redirect when it encounters an Android browser, the last time I checked.

  • You are attempting to display a Toast, yet you have no idea if that code will run on the main application thread or not.

Roark answered 5/2, 2011 at 12:46 Comment(1)
You are right. Toast will be run on UI thread. I just got to know it's a bug in WebView which is why this is not working. I have a thread on Google Groups for Android also I need to can I uninstall emulator from version 2.3 back to 2.2?Joachim

© 2022 - 2024 — McMap. All rights reserved.