pedant / safe-java-js-webview-bridge

为WebView中的Java与JavaScript提供【安全可靠】的多样互通方案
http://pedant.github.io/2014/07/04/webview-js-java-interface-research/
2.43k stars 567 forks source link

JS怎么传方法给JAVA进行执行 #7

Open daliyan opened 9 years ago

daliyan commented 9 years ago

在 JsCallJava的call方法中 有一个类型判断:values[k + 1] = new JsCallback(webView, mInjectedName, argsVals.getInt(k));进行执行的时候有一个argsVals.getInt(k)获取到对应的全局方法索引,但是假如我需要传入一个对应的方法名称(String 类型),需要怎么做,我没有看到onJsPrompt代码是怎么对message进行封装的,例如我检测到的: message="{\"method\":\"delayJsCallBack1\",\"types\":[\"number\",\"string\",\"function\"],\"args\":[1,\"call back haha\",\"1\"]}";其中1是message传过来的,请问我需要怎么做,期待您的回复。

PengliangC commented 9 years ago

我自己弄的 public class UseJsMethod { WebView webView; private Handler mHandler=new Handler(); public UseJsMethod(WebView webView) { this.webView = webView; }

public void useJsMethod(final String methodName) {
    mHandler.post(new Runnable() {
        public void run() {
            //use method in js
            webView.loadUrl("javascript:"+methodName+"()");
        }
    });
}

}