[英]Phonegap Java call to Javascript
我正在使用Phonegap開發應用程序。 我已經下載了相機插件,但是,我想從插件中進行Java調用。
在相機插件的Java文件中,我執行了以下操作;
private class sendJS extends CordovaActivity {
public void sendcommand() {
this.sendJavascript("alert('1337')");
}
}
@Override
public void onClick(View v) {
sendJS test = new sendJS();
test.sendcommand();
}
但是,當觸發onclick時,什么也沒有發生...
我也嘗試了super.sendJavascript()和super.loadUrl(),但是沒有用。
謝謝。
您可以通過兩種方式來交流您的JavaScript代碼。 第一個是通過.loadUrl(...)
方法將代碼注入到webview中。 第二個是通過回調來響應javascript-> native-plugin(java)調用。
您可以在execYourJavaMethod()中看到回調響應,並在sendcommand()中注入
private class sendJS extends CordovaActivity {
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
// Implement here your calls from javascript
boolean result = false;
if ("yourJavaMethod".equals(action)) {
JSONObject options = args.optJSONObject(0);
result = execYourJavaMethod(options, callbackContext);
}
return result;
}
public boolean execYourJavaMethod(JSONObject options, CallbackContext callbackContext) {
// This will inject an event to your javascript code
this.sendcommand();
boolean iWantToCallSuccessCallbackWithData = false;
if (iWantToCallSuccessCallbackWithData) {
// This will call your success callback with some data
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, "Your data back to javascript"));
} else {
// This will call the success callback with no data
callbackContext.success();
}
return true;
}
public void sendcommand() {
String event = String.format("javascript:cordova.fireDocumentEvent('yourEventHere', { 'param1': '%s' });", "some string for param1");
this.webView.loadUrl(event);
}
}
從javascript方面,您應該注冊事件的偵聽器:
document.addEventListener('yourEventHere', function(e) {
alert(JSON.stringify(e));
});
要與您的Java插件通訊:
myPlugin.doSomethingInJava = function (successCallback, failureCallback) {
cordova.exec(successCallback, failureCallback, 'sendJS', 'yourJavaMethod', []);
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.