如何注入一个可以在Android中作为构造函数调用的JS对象?

时间:2014-02-24 10:15:14

标签: javascript android-webview qtwebkit

我需要实现一个JS对象并像这样使用它(JavaScript代码):

var mp = new MediaPlayer();

在QtWebkit中很好,这是我注入这个JS对象(C ++代码)的方式:

static JSClassDefinition SomeClassDefinition = {
    .....
    callAsConstructor: SomeClassCallAsConstructor,
    .....
}

webview->addToJavaScriptWindowObject( context, "SomeObject", & SomeClassDefinition );

我想将此模块移植到Android,我尝试使用WebView:addJavascriptInterface()将此注入到Android中的WebView中。不知何故,它不能用作这样的构造函数:

var mp = new MediaPlayer();

结果始终未定义。

如何像在QtWebKit中一样在Android中完成这项工作?

非常感谢。

1 个答案:

答案 0 :(得分:0)

这不是它在Android上的运作方式。

将JavaScript对象注入Android的webview时,Java对象的实例将绑定到javaScript window对象。

例如:

WebView.addJavaScriptInterface(new Object() { ... }, "mediaPlayer");

允许您通过JavaScript中的window.mediaPlayer在Java对象上调用Java方法。

Android API Reference: WebView::addJavascriptInterface

相关问题