我正在构建一个 phonegap-android 应用程序,作为流程的一部分,我正在使用 javascriptInterface 从我的 javascript 端调用一个活动
这看起来像
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
super.init();
appView.addJavascriptInterface(this, "Android");
super.loadUrl(Config.getStartUrl());
}
现在我还想将我活动中的一些数据发送回cordova webview。
我在我想要调用的 javascript 文件中定义了一个函数
function jsi_getData(data) {
console.log("JSI GET IMAGE INVOKED ON JAVASCRIPT SIDE");
alert(data);
}
在我的 android 代码中,在 onActivityResult 中,我调用了这个 javascript 函数
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == 12321){
//do some work
Log.i("MAIN_ACTIVITY", "*************** received data"+ data);
appView.sendJavascript("javascript:jsi_getImage("+data+");");
}
}
这给了我以下错误
09-16 18:18:27.211: I/Web Console(28991): processMessage failed: Message: Jjavascript:jsi_getData('data');:1034
09-16 18:18:27.211: I/Web Console(28991): processMessage failed: Error: ReferenceError: jsi_getImage is not defined:1035
09-16 18:18:27.211: I/Web Console(28991): processMessage failed: Stack: ReferenceError: jsi_getImage is not defined
09-16 18:18:27.211: I/Web Console(28991): at eval (eval at processMessage (file:///android_asset/www/js/libs/cordova.js:996:26), <anonymous>:1:1)
09-16 18:18:27.211: I/Web Console(28991): at processMessage (file:///android_asset/www/js/libs/cordova.js:996:13)
09-16 18:18:27.211: I/Web Console(28991): at Function.androidExec.processMessages (file:///android_asset/www/js/libs/cordova.js:1063:13)
09-16 18:18:27.211: I/Web Console(28991): at pollOnce (file:///android_asset/www/js/libs/cordova.js:933:17):1036
09-16 18:18:27.481: I/Adreno200-EGLSUB(28991): <ConfigWindowMatch:2087>: Format RGBA_8888.
我也改成了appView.sendJavascript()
,this.sendJavascript()
但我仍然有同样的错误请帮助,因为我被卡住了!这将非常有帮助。
谢谢