如何将返回值从javascript函数传递给android?

时间:2011-03-10 19:03:53

标签: javascript android webview

我想让我的 android 应用程序调用用 javascript 编写的函数,并期望从中获得返回值。

我知道 WebView.loadUrl 是异步工作的,所以我现在要做的就是让javascript在完成后通知我的android应用程序并通过调用java函数传递返回值 javascriptinterface

我想知道是否有更好的方法可以做到这一点以及是否有人注意到javascript和android之间的任何消息丢失。

1 个答案:

答案 0 :(得分:30)

我刚收到你的问题。

拥有这样的JS功能。

function androidResponse() {
   window.cpjs.sendToAndroid("I am being sent to Android.");
}

设置Android(Java)。

有这样的最终课程

final class IJavascriptHandler {
   IJavascriptHandler() {
   }

   // This annotation is required in Jelly Bean and later:
   @JavascriptInterface
   public void sendToAndroid(String text) {
      // this is called from JS with passed value
      Toast t = Toast.makeText(getApplicationContext(), text, 2000);
      t.show();
   }
}

然后在你的WebView上加载。

webView.addJavascriptInterface(new IJavascriptHandler(), "cpjs");

调用JS函数

webView.loadUrl("javascript:androidResponse();void(0)");

已更新


此外,我遇到了一些非常糟糕的时间遇到​​问题,同时从Java传递了数百行字符串到JS并且后来在StackOverflow上发布了没有好的答案,但最终解决了它知道problme是字符串中的特殊字符所以特别需要使用字符串来回传递时的字符。

Passing Data From Javascript To Android WebView

HTML String Inside Nested String

HTML TextArea Characters Limit Inside Android WebView