Mit Phonegap lässt sich nativer Code triggern aus Javascript heraus mit folgendem Code:
//onDeviceReady cordova.exec( success, fail, "UploadImage", "nativeAction", ["success"]); function success (result) { alert("SUCCESS: \r\n"+result ); } function fail (error) { alert("ERROR: \r\n"+error ); }
Dieser Code ruft die Klasse UploadImage die Funktion execute mit Parameter action=’nativeAction‘ und einem JsonString(!) data = „[’success‘]“ auf. Data kann dafür verwendet werden Daten nach Java zu übergeben:
import org.apache.cordova.api.Plugin; import org.apache.cordova.api.PluginResult; public class UploadImage extends Plugin { public static final String NATIVE_ACTION_STRING="nativeAction"; public static final String SUCCESS_PARAMETER="success"; @Override public PluginResult execute(String action, JSONArray data, String callbackId) { Log.d("HelloPlugin", "Hello, this is a native function called from PhoneGap/Cordova!"); //only perform the action if it is the one that should be invoked if (NATIVE_ACTION_STRING.equals(action)) { String resultType = null; try { resultType = data.getString(0); } catch (Exception ex) { Log.d("HelloPlugin", ex.toString()); } if (resultType.equals(SUCCESS_PARAMETER)) { return new PluginResult(PluginResult.Status.OK, "Yay, Success!!!"); } else { return new PluginResult(PluginResult.Status.ERROR, "Oops, Error :("); } } return null; } }
Außerdem muss das Plugin in die res/xml/config.xml eingetragen werden:
<plugin name="UploadImage" value="de.sv.foo.plugin.UploadImage"/>
Die Ausgabe sollte sein:
"SUCCESS: Yay, Success!!!"