使用Phonegap直接从java调用javascript

时间:2014-07-02 10:00:14

标签: javascript android cordova

我正在编写一个本机插件,用于在键盘显示时用JavaScript引发事件。我这样做:

appView.sendJavascript("cordova.fireWindowEvent('show_keyboard')")

在我的JavaScript中,我会做类似的事情:

window.addEventListener('show_keyboard', handler);

然而,这已经被PhoneGap专家称为PhoneGap中的一个大不了。这种方法有什么问题?

2 个答案:

答案 0 :(得分:2)

  

寻找可信和/或官方来源的答案。

我也不是PhoneGap专家,但Apache Cordovathe engine that powers PhoneGapits source on GitHub

消息来源说什么?

嗯,举个例子,让我们来看看Cordova如何发送它的volumedownbutton event。我提出lines 613–621 of CordovaWebView.java

if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
    this.loadUrl("javascript:cordova.fireDocumentEvent('volumedownbutton');");
    return true;
}
// If volumeup key
else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
    this.loadUrl("javascript:cordova.fireDocumentEvent('volumeupbutton');");
    return true;
}

Cordova似乎采用了类似的方法向JavaScript发送事件。

你有什么问题?

我不确定你的同事提出的确切问题是什么,但似乎sendJavascript is deprecated。那就是那个。但是,如果您的appViewCordovaWebView,则可以按照与Cordova本身相同的方式调用loadUrl(如上所示)。

答案 1 :(得分:0)

我不是手机专家,但为什么不直接调用方法而不是使用听众呢?

例如

function keyboardShown() {
    alert("test"); //or other code
}

appView.sendJavascript("keyboardShown();")

这样就可以消除通过侦听器的开销。

如果这仍然不能满足您的phonegap专家的要求,请问他将如何改进此代码。