DVHMA/plugins/DVHMA-WebIntent/src/android/WebIntent.java

57 lines
2.0 KiB
Java

package com.borismus.webintent;
import org.apache.cordova.CordovaActivity;
import org.json.JSONArray;
import org.json.JSONException;
import android.content.Intent;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.PluginResult;
/**
* WebIntent is a PhoneGap plugin that bridges Android intents and web applications:
*
* 1. web apps can spawn intents that call native Android applications. 2. (after setting up correct
* intent filters for PhoneGap applications), Android intents can be handled by PhoneGap web
* applications.
*
* @author boris@borismus.com
*
*/
public class WebIntent extends CordovaPlugin {
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) {
try {
if (action.equals("getExtra")) {
return getExtra(args, callbackContext);
}
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.INVALID_ACTION));
return false;
} catch (JSONException e) {
e.printStackTrace();
String errorMessage = e.getMessage();
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION, errorMessage));
return false;
}
}
boolean getExtra(JSONArray args, CallbackContext callbackContext) throws JSONException {
if (args.length() != 1) {
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.INVALID_ACTION));
return false;
}
Intent i = ((CordovaActivity) this.cordova.getActivity()).getIntent();
String extraName = args.getString(0);
if (i.hasExtra(extraName)) {
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, i.getStringExtra(extraName)));
return true;
} else {
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR));
return false;
}
}
}