Android 非WebView 调用 js代码

1、第三方包 下载地址: https://github.com/mozilla/rhino

得到 rhino-1.7.12

2、引入到项目中

3、工具类

/**
 *
 * @param js js源码 "function test(a,b){return a+b;}"
 * @param functionName 方法名
 * @param functionParams 参数
 * @return
 */
public static String callFunction(String js,String functionName,Object[] functionParams){
    if(TextUtils.isEmpty(js)) return "";
    js = js.replace("\\r\\n",""); //去掉转义符
    Context rhino= Context.enter();
    rhino.setOptimizationLevel(-1);
    try {
        Scriptable scope=rhino.initStandardObjects();
        rhino.evaluateString(scope,js, null, 0,null);
        Function function = (Function) scope.get(functionName,scope);
        Object result = function.call(rhino,scope,scope,functionParams);
        if(result instanceof String){
            return (String) result;
        }else if(result instanceof NativeJavaObject){
            return (String) ((NativeJavaObject) result).getDefaultValue(String.class);
        }else if(result instanceof NativeObject){
            return (String) ((NativeObject)result).getDefaultValue(String.class);
        }
        return result.toString();
    }catch (Exception e){

    }

    Context.exit();
    return "";

}

猜你喜欢

转载自blog.csdn.net/wuqiqi1992/article/details/108417094