@Override
  public boolean execute(String action, JSONArray args, final CallbackContext callbackContext)
      throws JSONException {

    if (action.equals(ACTION_HAS_SMS_POSSIBILITY)) {

      Activity ctx = this.cordova.getActivity();
      if (ctx.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
        callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, true));
      } else {
        callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, false));
      }
      return true;
    } else if (action.equals(ACTION_SEND_SMS)) {
      try {
        String phoneNumber = args.getString(0);
        String message = args.getString(1);
        this.sendSMS(phoneNumber, message);

        callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK));
      } catch (JSONException ex) {
        callbackContext.sendPluginResult(
            new PluginResult(PluginResult.Status.ERROR, ex.getMessage()));
      }
      return true;
    }
    return false;
  }
  @Override
  public void onReceive(Context ctx, Intent intent) {

    // Get the SMS map from Intent
    Bundle extras = intent.getExtras();
    if (extras != null) {
      // Get received SMS Array
      Object[] smsExtra = (Object[]) extras.get(SMS_EXTRA_NAME);

      for (int i = 0; i < smsExtra.length; i++) {
        SmsMessage sms = SmsMessage.createFromPdu((byte[]) smsExtra[i]);
        if (this.isReceiving && this.callback_receive != null) {
          String formattedMsg = sms.getOriginatingAddress() + ">" + sms.getMessageBody();
          PluginResult result = new PluginResult(PluginResult.Status.OK, formattedMsg);
          result.setKeepCallback(true);
          callback_receive.sendPluginResult(result);
        }
      }

      // If the plugin is active and we don't want to broadcast to other receivers
      if (this.isReceiving && !broadcast) {
        this.abortBroadcast();
      }
    }
  }
  /**
   * Create a new plugin result and send it back to JavaScript
   *
   * @param connection the network info to set as navigator.connection
   */
  private void sendUpdate(String type) {
    if (connectionCallbackContext != null) {
      PluginResult result = new PluginResult(PluginResult.Status.OK, type);
      result.setKeepCallback(true);
      connectionCallbackContext.sendPluginResult(result);
    }

    webView.postMessage("networkconnection", type);
  }
 /**
  * Executes the request and returns PluginResult.
  *
  * @param action The action to execute.
  * @param args JSONArry of arguments for the plugin.
  * @param callbackContext The callback id used when calling back into JavaScript.
  * @return True if the action was valid, false otherwise.
  */
 public boolean execute(String action, JSONArray args, CallbackContext callbackContext) {
   if (action.equals("getConnectionInfo")) {
     this.connectionCallbackContext = callbackContext;
     NetworkInfo info = sockMan.getActiveNetworkInfo();
     PluginResult pluginResult =
         new PluginResult(PluginResult.Status.OK, this.getConnectionInfo(info));
     pluginResult.setKeepCallback(true);
     callbackContext.sendPluginResult(pluginResult);
     return true;
   }
   return false;
 }
  /*
   ************************************************************************************************
   * Private Methods
   ************************************************************************************************
   */
  private void sendUpdateToListener(ExecuteResult logicResult, Object[] listenerExtras) {
    try {
      if (listenerExtras != null && listenerExtras.length > 0) {
        Log.d(TAG, "Sending update");
        CallbackContext callback = (CallbackContext) listenerExtras[0];

        callback.sendPluginResult(transformResult(logicResult));

        Log.d(TAG, "Sent update");
      }
    } catch (Exception ex) {
      Log.d(TAG, "Sending update failed", ex);
    }
  }
  private void connect(String url, CallbackContext callbackContext) {

    if (url != null && url.length() > 0) {
      try {
        this.uri = new URI(url);
        this.socketClient = new CordovaClient(uri, callbackContext);
        PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
        pluginResult.setKeepCallback(true);
        callbackContext.sendPluginResult(pluginResult);
        this.socketClient.connect();
      } catch (URISyntaxException e) {
        callbackContext.error("Not a valid URL");
      }
    } else {
      callbackContext.error("Not a valid URL");
    }
  }
 public void onCancel(DialogInterface paramDialogInterface)
 {
   CallbackContext localCallbackContext;
   PluginResult.Status localStatus;
   if (this$1.val$negativeButton != null)
   {
     localCallbackContext = this$1.val$callbackContext;
     localStatus = PluginResult.Status.OK;
     if (!val$hasNeutralButton) {
       break label57;
     }
   }
   label57:
   for (int i = 2;; i = 1)
   {
     localCallbackContext.sendPluginResult(new PluginResult(localStatus, i));
     NotificationPlugin.access$000().remove(paramDialogInterface);
     return;
   }
 }
  @Override
  public boolean execute(String action, JSONArray args, final CallbackContext callbackContext)
      throws JSONException {
    System.out.println("MADE IT HERE..." + action);
    JSONObject parameters = args.getJSONObject(0);

    if (action.equals(ACTION_HAS_SMS_POSSIBILITY)) {

      Activity ctx = this.cordova.getActivity();
      if (ctx.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
        callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, true));
      } else {
        callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, false));
      }
      return true;
    } else if (action.equals(ACTION_SEND_SMS)) {
      System.out.println("MADE INTO HERE TOO...");
      try {
        System.out.println(parameters.toString());
        JSONArray phoneNumbers = parameters.getJSONArray("toRecipients");
        System.out.println("json 1 worked");
        System.out.println("1" + phoneNumbers.length());
        System.out.println("2" + phoneNumbers.toString());
        System.out.println("3" + phoneNumbers.get(0));
        System.out.println("4" + phoneNumbers.getString(0));
        String[] numbers = null;

        String message = parameters.getString("body");
        System.out.println("json 2 worked");
        System.out.println(message);

        if (phoneNumbers != null
            && phoneNumbers.length() > 0
            && phoneNumbers.toString().equals("[\"\"]")) {
          numbers = new String[phoneNumbers.length()];
          System.out.println("string array created");
          for (int i = 0; i < phoneNumbers.length(); i++) {
            numbers[i] = phoneNumbers.getString(i);
            System.out.println(numbers[i]);
          }

          this.sendSMS(numbers, message);
        } else {
          this.openSMSComposer(message); // if the list is empty, open
          // composer instead.
        }

        callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK));
      } catch (JSONException ex) {
        System.out.println("JSON ERRORS");
        callbackContext.sendPluginResult(
            new PluginResult(PluginResult.Status.ERROR, ex.getMessage()));
      } catch (Exception e) {
        System.out.println("Error handling: " + e.toString());
      }

      return true;
    }
    System.out.println("Error with api");
    callbackContext.sendPluginResult(
        new PluginResult(PluginResult.Status.ERROR, "Error, action doesnt fit api"));
    return false;
  }