从CordovaActivity调用JavaScript

时间:2015-05-26 08:30:51

标签: android cordova

我正在使用Cordova开发Android应用。我有一个自定义的BroadcastReceiver,我想在onReceive方法中打开主(也是唯一一个)CordovaActivity。它工作正常。

现在,我需要执行一个Javascript函数来根据意图的额外值来决定显示哪个屏幕(html)。

MyBroadcastReceiver.java

  public void onReceive(Context context, Intent intent) {
      String myExtra = intent.getStringExtra("myExtra");
      Intent toActivity = new Intent(context, MainCordovaActivity.class);
      toActivity.putExtra("myExtra", myExtra);
      context.startActivity(newActivity);
    }

MainCordovaActivity.java

    public class MainCordovaActivity extends CordovaActivity {
      public void onCreate(Bundle s) {
        super.onCreate(s);
        super.init();
        loadUrl(launchUrl);
        String myExtra = getIntent().getExtras().getString("myExtra");
        //Execute Javascript here
      }
}

我该怎么做?我是以正确的方式吗?

感谢。

1 个答案:

答案 0 :(得分:0)

你需要让回调能够在你的插件中经过一段时间后调用成功/错误回调函数,如this

在一些java类方法中:

PluginResult r = new PluginResult(PluginResult.Status.NO_RESULT);
r.setKeepCallback(true);
callbackContext.sendPluginResult(r);

// assign callbackContext to class property named callbackContext 
this.callbackContext = callbackContext;

然后,您可以将一个字符串(例如序列化的 JSONObject )传递给 PluginResult 的新实例,该实例将作为参数值返回到您的成功/错误函数:

在一些java类方法中:

JSONObject serialized = new JSONObject();

serialized.put("value",1234);

// use assigned class property callbackContext to send some data back to your success callback 
// because of PluginResult.Status.OK and by passing PluginResult.Status.ERROR you invoke error callback
this.callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, serialized));

查看 PluginResult 接受的参数here

在plugin.js文件中

exec(function(serialized){ 
   console.log(serialized.value);// 1234
}, function(){}, "your plugin name", "your plugin action", { some_arg:'for your plugin'});