package org.cloudsky.cordovaPlugins; import android.content.Intent; import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaPlugin; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class ZBar extends CordovaPlugin { private static int SCAN_CODE = 1; private boolean isInProgress = false; private CallbackContext scanCallbackContext; @Override // org.apache.cordova.CordovaPlugin public boolean execute(String str, JSONArray jSONArray, CallbackContext callbackContext) throws JSONException { if (!str.equals("scan")) { return false; } if (this.isInProgress) { callbackContext.error("A scan is already in progress!"); } else { this.isInProgress = true; this.scanCallbackContext = callbackContext; JSONObject optJSONObject = jSONArray.optJSONObject(0); Intent intent = new Intent(this.f0cordova.getActivity().getApplicationContext(), ZBarScannerActivity.class); intent.putExtra("params", optJSONObject.toString()); this.f0cordova.startActivityForResult(this, intent, SCAN_CODE); } return true; } @Override // org.apache.cordova.CordovaPlugin public void onActivityResult(int i, int i2, Intent intent) { if (i == SCAN_CODE) { if (i2 != 2) { switch (i2) { case -1: this.scanCallbackContext.success(intent.getStringExtra(ZBarScannerActivity.EXTRA_QRVALUE)); break; case 0: this.scanCallbackContext.error("cancelled"); break; default: this.scanCallbackContext.error("Unknown error"); break; } } else { this.scanCallbackContext.error("Scan failed due to an error"); } this.isInProgress = false; this.scanCallbackContext = null; } } }