Devolución de llamada de la actividad en Córdoba
Tengo una actividad llamada 'Signature' y la llamo de CordovaPlugin;
Plugin.java
- Cómo crear savedInstanceState para la imagen seleccionada dinámicamente en Android?
- Conversión de mapa de bits: Creación de mapa de bits que excluye los lados transparentes del mapa de bits transparente
- Cómo explícitamente realizar la recolección de basura
- Java Android - recorte Imagen en ImageView
- Ajuste del valor de la hiladora dinámicamente
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
- ¿Cuál sería un método para crear un contador de números en Android?
- Cómo actualizar fragmento anterior después de cerrar una actividad que se inició dentro de un adaptador?
- Sustitución de fragmentos en una actividad que no llama aAttach, onCreate, onCreateView, etc.
- Cómo obtener la cadena subyacente de un JsonParser (Jackson Json)
- ArrayList a Array de cadenas en java
- ¿Cómo obtengo el búfer de la cámara Android en bruto en C con JNI?
- Keytool Alias no tiene clave
- Biblioteca PDF para renderizar los archivos PDF en Android
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 obtener el código del país (código de llamada) en android?
- FilePicker desde android webview trabajando sólo una vez