Devolución de llamada de la actividad en Córdoba

Tengo una actividad llamada 'Signature' y la llamo de CordovaPlugin;

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

 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(); } 

Sin embargo, cuando llamo "cordova.startActivityForResult" función "onActivityResult" inmediatamente invoca a sí mismo. No puedo devolver la llamada de Actividad a través de finishWithResult. Cualquier consejo. Gracias

En primer lugar había un código que faltaba (return-statement para execute -method) y tienes que decirle a android / cordova-plugin que esperes hasta que haya un resultado enviado de vuelta a tu webview-app usando NO_RESULT y setKeepCallback de PluginResult de otra manera cordova / android espera obtener un resultado tan pronto como execute -method ha terminado:

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()); } 

Tenga un ejemplo aquí (para su clase de plugin) y aquí (para su clase de firma).

Y una de las mías: aquí y aquí .

  • Cómo reanudar una descarga interrumpida - parte 2
  • ¿Cómo conseguir mes y día en android?
  • Formato EditarTexto a moneda con números enteros
  • Cómo obtener la lista de navegadores web en el sistema
  • Android rxJava Manejo de errores con retroadaptación
  • Android AudioRecord falla al inicializar (Otras soluciones no funcionan)
  • No se puede resolver el símbolo c882c94be45fff9d16a1cf845fc16ec5
  • HTML.fromHtml agrega espacio al final del texto?
  • ¿Es posible modificar el código fuente del archivo de biblioteca en Android Studio desde la dependencia de Gradle
  • Android Show Soft Keyboard cuando se inicia la primera actividad?
  • Cómo cargar Android v7 soporte de la biblioteca en SBT Android Project?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.