Android - 在 api 级别 19 之前评估javascript

7 javascript android webview android-api-levels

evaluatejavascript可用于 API 级别 19 及更高版本。它有一个回调。我知道我可以在 API 级别 19 之前使用loadUrl代替evaluatejavascriptfor。但是我如何处理脚本的返回值?有解决方案吗?

String script = "function(){ return "abc"}()";
mywebview.loadUrl(script);
Run Code Online (Sandbox Code Playgroud)

Roy*_*erg 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')}()");
Run Code Online (Sandbox Code Playgroud)