1.直接原生调用JS方法
调用方法 JS_NAMESPACE 需要注意是插件下的plugin
<js-module src="www/device.js" name="device">
<clobbers target="device" />
</js-module>
target 相同.不然会爆不识别的方法
带参数的方法可参考重写
private void fireEvent(String event, Object params) {
String js = String.format("%s.fireEvent('%s',%s);",
JS_NAMESPACE, event, params.toString());
cordova.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
webView.loadUrl("javascript:" + js);
}
});
}
2.通过setKeepCallback持续传递值
如我需要再原生插件中点击了按钮告诉 web端
先拦截事件:
if(action.equals("onAdSkip")){
PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
pluginResult.setKeepCallback(true);
skipCall=callbackContext;
callbackContext.sendPluginResult(pluginResult);
return true;
}
静态方法 方便其他地方调用;
public static void sendskipEvent(JSONObject _json) {
PluginResult pluginResult = new PluginResult(PluginResult.Status.OK, _json);
pluginResult.setKeepCallback(true);
if (skipCall != null) {
skipCall.sendPluginResult(pluginResult);
}
}
最后是代码中使用:
xx.sendskipEvent(可参数)