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

Vic*_*cky 12 javascript android webview

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

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

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

Uma*_* A. 30

我刚收到你的问题.

有这样的JS功能.

function androidResponse() {
   window.cpjs.sendToAndroid("I am being sent to Android.");
}
Run Code Online (Sandbox Code Playgroud)

设置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();
   }
}
Run Code Online (Sandbox Code Playgroud)

然后在你的WebView上加载了.

webView.addJavascriptInterface(new IJavascriptHandler(), "cpjs");
Run Code Online (Sandbox Code Playgroud)

调用JS函数

webView.loadUrl("javascript:androidResponse();void(0)");
Run Code Online (Sandbox Code Playgroud)

更新


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

将数据从Javascript传递到Android WebView

嵌套字符串中的HTML字符串

HTML TextArea字符限制在Android WebView中