回调从上科尔多瓦活动 [英] Callback From Activity on Cordova

查看:342
本文介绍了回调从上科尔多瓦活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个名为签名的活动,我从CordovaPlugin调用它;

I have an activity Called 'Signature' and i call it from CordovaPlugin;

Plugin.java

Plugin.java

public boolean execute(String action, JSONArray args,
            CallbackContext callbackContext) throws JSONException
    {
    Intent i = new Intent(context, Signature.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    cordova.startActivityForResult(this,i,90);
}
    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        Log.d(TAG, "activity result in plugin: requestCode(" + requestCode + "), resultCode(" + resultCode + ")");
        if(requestCode == 90) {
             if (resultCode == this.cordova.getActivity().RESULT_OK) {
                 Bundle res = intent.getExtras();
                 String result = res.getString("results");
                 Log.d("FIRST", "result:"+result);
                 this.callbackContext
                 .success(result.toString());
             } else {
                 this.callbackContext.error("Error");
             }
     }

Signature.java

Signature.java

private void finishWithResult(String result,int status)
{
    Bundle conData = new Bundle();
    conData.putString("results", result);
    Intent intent = new Intent();
    intent.putExtras(conData);
    setResult(status, intent);
    finish();
}

然而,当我称之为cordova.startActivityForResult功能onActivityResult立即调用它的自我。我无法从活动通过finishWithResult回调。任何意见。谢谢

However when i call "cordova.startActivityForResult" function "onActivityResult" immediately invokes it self. I cannot callback from Activity via finishWithResult. Any advices. Thanks

推荐答案

首先是有一些code缺失(返回语句进行的执行的-method),你必须告诉机器人/科尔多瓦 - 插件,等到有通过使用的 PluginResult 的,否则科尔多瓦/安卓的 NO_RESULT setKeepCallback 的发回给你的WebView应用程序内的结果希望尽快得到结果的执行的-method已完成:

First of all there was some code missing(return-statement for execute-method) and you have to tell android/cordova-plugin to wait until there is a result sent back to your webview-app by using NO_RESULT and setKeepCallback of PluginResult otherwise cordova/android expects to get an result as soon as execute-method has finished:

Plugin.java:

Plugin.java:

public boolean execute(String action, JSONArray args,
            CallbackContext callbackContext) throws JSONException
    {

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

    Intent i = new Intent(context, Signature.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    cordova.startActivityForResult(this,i,90);

    return true;

}

public void onActivityResult(int requestCode, int resultCode, Intent intent){
    // here is your former code
    ...
    ...
    // at last call sendPluginResult 
    this.callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result.toString()));

    // when there is no direct result form your execute-method use sendPluginResult because most plugins I saw and made recently (Reminder) prefer sendPluginResult to success/error
    // this.callbackContext.success(result.toString());
}

有一个例子<一href="https://github.com/shaithana/cordova-plugin-wezka-nativecamera/blob/master/src/android/NativeCameraLauncher.java"相对=nofollow>此处(你的插件类)和<一href="https://github.com/shaithana/cordova-plugin-wezka-nativecamera/blob/master/src/android/CameraActivity.java"相对=nofollow>此处(你的签名类)。

Have an example here(for your plugin class) and here(for your signature class).

和一矿的:这里 和<一href="https://github.com/blauharley/Phonegap-AndroidPluginTest/blob/master/src/com/phonegap/plugintest/CameraPlugin.java"相对=nofollow>这里

这篇关于回调从上科尔多瓦活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆