evaluatejavascript
是API级别19及以后可用的一个函数,它具有回调功能。我知道在API级别19之前,我可以使用loadUrl
代替evaluatejavascript
。但是我该如何处理脚本的返回值呢?是否有解决方案?
String script = "function(){ return "abc"}()";
mywebview.loadUrl(script);
evaluatejavascript
是API级别19及以后可用的一个函数,它具有回调功能。我知道在API级别19之前,我可以使用loadUrl
代替evaluatejavascript
。但是我该如何处理脚本的返回值呢?是否有解决方案?
String script = "function(){ return "abc"}()";
mywebview.loadUrl(script);
WebView.addJavascriptInterface()
来实现。然后 JavaScript 可以使用该接口与您的代码进行通信。class JsObject {
@JavascriptInterface
public void returnValue(String value){
Log.d("JsObject", "Got value [" + value + "]");
}
}
mywebview.getSettings().setJavaScriptEnabled(true);
mywebview.addJavascriptInterface(new JsObject(), "injectedObject");
mywebview.loadUrl("javascript:function(){ injectedObject.returnValue('abc')}()");
JavascriptInterface
来从 Javascript 返回值。 - Vladyslav Matviienko