Android - 在API级别19之前使用evaluatejavascript

7

evaluatejavascript是API级别19及以后可用的一个函数,它具有回调功能。我知道在API级别19之前,我可以使用loadUrl代替evaluatejavascript。但是我该如何处理脚本的返回值呢?是否有解决方案?

String script = "function(){ return "abc"}()";
mywebview.loadUrl(script);

你的代码引号使用不正确。你可以使用 JavascriptInterface 来从 Javascript 返回值。 - Vladyslav Matviienko
1个回答

0
你可以使用 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')}()");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接