Cordova Plugin: Send event to Javascript?

六眼飞鱼酱① 提交于 2020-08-22 06:05:38

问题


I'm trying to develop a Cordova plugin for Android following the tutorial found here: http://www.mat-d.com/site/tutorial-creating-a-cordova-phonegap-plugin-for-android-app/

So far, so good. However, I'd like to know how to send data/trigger an event in my Javascript code from my plugin - for example, when a user taps an icon in my native code, I'd like my javascript to do something. Is this possible?


回答1:


So I got it to work as follows:

I created a private CallbackContext object in my plugin:

private CallbackContext callbackContext;

and stored the CallbackContext supplied in the execute() method in it:

public boolean execute(final String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
    this.callbackContext = callbackContext;
}

Elsewhere in my Java code, I can access this callback and send plugin results to it. This callback will become invalid, however, after it's first triggered, unless keepCallback is set to true:

PluginResult pluginResult = new PluginResult(PluginResult.Status.OK, "WHAT");
pluginResult.setKeepCallback(true);
callbackContext.sendPluginResult(pluginResult);

This made me a happy camper. I hope it helps someone else!




回答2:


Yes you can trigger webview from Native code.

For Android :

this.appView.loadUrl("javascript:yourmethodname());");

For iOS :

[webView stringByEvaluatingJavaScriptFromString:@"yourmethodname()"];

yourmethodname should be the javascript function you wish to call.




回答3:


Using Android I achieved it with:

cordova.getActivity().runOnUiThread(() -> webView.loadUrl("javascript:console.log('hey!');"));



来源:https://stackoverflow.com/questions/29910478/cordova-plugin-send-event-to-javascript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!