簡體   English   中英

Phonegap Java調用到Javascript

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM