我想让我的 android 应用程序调用用 javascript 编写的函数,并期望从中获得返回值。
我知道 WebView.loadUrl 是异步工作的,所以我现在要做的就是让javascript在完成后通知我的android应用程序并通过调用java函数传递返回值 javascriptinterface
我想知道是否有更好的方法可以做到这一点以及是否有人注意到javascript和android之间的任何消息丢失。
答案 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