3 Stimmen

Wie man Daten von einer Aktivität an ein Cordova-Plugin zurückgibt

Ich habe ein Cordova-Plugin geschrieben, um eine Cordova-Aktivität aufzurufen

Intent intent=new Intent(cordova.getActivity() , AndroidCamera.class);
cordova.getActivity().startActivity(intent);

Ich möchte einige Daten von dieser Android-Kamera-Aktivität an mein Plugin zurückgeben, damit ich sie an JavaScript zurückschicken kann.

1voto

Rufen Sie Ihre Aktivität in ActivityForResult auf,

public void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.i(TAG, "*****  Ergebnis von der Kamera" + requestCode + " *****  " + resultCode);
        if (requestCode == REQUEST_IMAGE && resultCode == Activity.RESULT_OK) {
            if (bitmap != null) {
                     callbackContext.success(base64Image);
              }
        }

Ich konvertiere Bitmap in Base64-Bild und sende es über die success-Methode an den Server. Es funktioniert einwandfrei

0voto

Roope Hakulinen Punkte 7075

Siehe den Android-Plattform-Leitfaden in der Cordova-Dokumentation. Dort gibt es ein schönes Beispiel, das die Nachricht zurückgibt.

callbackContext.success(message);

wo callbackContext der CallbackContext ist, der als Parameter für execute Ihres Plugins bereitgestellt wird.

Wenn Sie auch anzeigen möchten, dass ein Fehler aufgetreten ist, können Sie aufrufen

callbackContext.error("Erwartetes nicht leeres Zeichenfolgenargument.");

0voto

Rohit Singh Punkte 14318

Alle CordovaPlugin wird standardmäßig mit Callback geliefert

Wenn Sie ein CordovaPlugin erstellen, erweitern Sie die CordovaPlugin-Klasse. Die CordovaPlugin-Klasse enthält die Methode onActivityResult(int requestCode, int resultCode, Intent intent), die Sie in Ihrem Plugin überschreiben können, um das Ergebnis zu erhalten.

Hier ist ein generischer Codeausschnitt

public class MyCordovaPlugin extends CordovaPlugin{

     private int MY_REQ_CODE = 1000;

     public void someMethod(){
          Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
          cordova.getActivity().startActivityForResult(takePicture, MY_REQ_CODE);
     }

     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {

       if (requestCode == MY_REQ_CODE) {
           // Machen Sie etwas mit den Daten
           log.d("MY_TAG", data);

       }
    }

}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X