private void clear(final CordovaArgs args, final CallbackContext callbackContext) { cordova.getThreadPool().execute(new Runnable() { @Override public void run() { try { String namespace = args.getString(0); JSONObject oldValues = getStorage(namespace); setStorage(namespace, new JSONObject()); callbackContext.success(oldValues); } catch (Exception e) { Log.e(LOG_TAG, "Could not clear storage", e); callbackContext.error("Could not update storage"); } } }); }
public boolean execute(String action, CordovaArgs args, final CallbackContext callbackContext) throws JSONException { if (!action.equals("navigation")) { return false; } this.option = NavigationOption.parseArgs(args); this.callbackContext = callbackContext; if (!hasPermisssion()) { PermissionHelper.requestPermissions(this, 0, permissions); } else { this.showNavigationView(); } PluginResult pluginResult = new PluginResult(PluginResult.Status.OK); pluginResult.setKeepCallback(true); callbackContext.sendPluginResult(pluginResult); return true; }
@Override public boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) throws JSONException { boolean cmdProcessed = true; if (JSAction.INIT.equals(action)) { jsInit(callbackContext); } else if (JSAction.FETCH_UPDATE.equals(action)) { jsFetchUpdate(callbackContext, args); } else if (JSAction.INSTALL_UPDATE.equals(action)) { jsInstallUpdate(callbackContext); } else if (JSAction.CONFIGURE.equals(action)) { jsSetPluginOptions(args, callbackContext); } else if (JSAction.REQUEST_APP_UPDATE.equals(action)) { jsRequestAppUpdate(args, callbackContext); } else if (JSAction.IS_UPDATE_AVAILABLE_FOR_INSTALLATION.equals(action)) { jsIsUpdateAvailableForInstallation(callbackContext); } else if (JSAction.GET_VERSION_INFO.equals(action)) { jsGetVersionInfo(callbackContext); } else { cmdProcessed = false; } return cmdProcessed; }
/** * Check for update. * Method is called from JS side. * * @param callback js callback */ private void jsFetchUpdate(CallbackContext callback, CordovaArgs args) { if (!isPluginReadyForWork) { sendPluginNotReadyToWork(UpdateDownloadErrorEvent.EVENT_NAME, callback); return; } FetchUpdateOptions fetchOptions = null; try { fetchOptions = new FetchUpdateOptions(args.optJSONObject(0)); } catch (JSONException ignored) { } fetchUpdate(callback, fetchOptions); }
/** * Set plugin options. Method is called from JavaScript. * * @param arguments arguments from JavaScript * @param callback callback where to send result */ @Deprecated private void jsSetPluginOptions(CordovaArgs arguments, CallbackContext callback) { if (!isPluginReadyForWork) { sendPluginNotReadyToWork("", callback); return; } try { JSONObject jsonObject = (JSONObject) arguments.get(0); chcpXmlConfig.mergeOptionsFromJs(jsonObject); // TODO: store them somewhere? } catch (JSONException e) { Log.d("CHCP", "Failed to process plugin options, received from JS.", e); } callback.success(); }
/** * Show dialog with request to update the application through the Google Play. * * @param arguments arguments from JavaScript * @param callback callback where to send result */ private void jsRequestAppUpdate(final CordovaArgs arguments, final CallbackContext callback) { if (!isPluginReadyForWork) { sendPluginNotReadyToWork("", callback); return; } String msg = null; try { msg = (String) arguments.get(0); } catch (JSONException e) { Log.d("CHCP", "Dialog message is not set", e); } if (TextUtils.isEmpty(msg)) { return; } final String storeURL = appConfigStorage.loadFromFolder(fileStructure.getWwwFolder()).getStoreUrl(); new AppUpdateRequestDialog(cordova.getActivity(), msg, storeURL, callback).show(); }
@Override public boolean execute(String action, CordovaArgs args, final CallbackContext callbackContext) throws JSONException { if ("messageChannel".equals(action)) { messageChannel = callbackContext; sendEventMessage("startup", BackgroundActivity.topInstance != null); return true; } else if ("show".equals(action)) { cordova.getThreadPool().execute(new Runnable() { @Override public void run() { show(callbackContext); } }); return true; } return false; }
private void listenUsingRfcomm(CordovaArgs args, final CallbackContext callbackContext) throws JSONException { int socketId = args.getInt(0); String uuid = args.getString(1); JSONObject options = args.getJSONObject(2); ChromeBluetoothSocketSocket socket = sockets.get(socketId); if (socket == null) { callbackContext.error("Invalid Argument"); return; } socket.listenUsingRfcomm(uuid, options, callbackContext); }
private boolean execRestartApplication(CordovaArgs args, CallbackContext callbackContext) { try { /* check if we have a deployed package already */ CodePushPackageMetadata deployedPackageMetadata = this.codePushPackageManager.getCurrentPackageMetadata(); if (deployedPackageMetadata != null) { callbackContext.success(); didStartApp = false; onStart(); } else { final String configLaunchUrl = this.getConfigLaunchUrl(); if (!this.pluginDestroyed) { callbackContext.success(); this.cordova.getActivity().runOnUiThread(new Runnable() { @Override public void run() { navigateToURL(configLaunchUrl); } }); } } } catch (Exception e) { callbackContext.error("An error occurred while restarting the application." + e.getMessage()); } return true; }
private void connect(CordovaArgs args, boolean secure, CallbackContext callbackContext) throws JSONException { String macAddress = args.getString(0); BluetoothDevice device = bluetoothAdapter.getRemoteDevice(macAddress); if (device != null) { connectCallback = callbackContext; bluetoothSerialService.connect(device, secure); PluginResult result = new PluginResult(PluginResult.Status.NO_RESULT); result.setKeepCallback(true); callbackContext.sendPluginResult(result); } else { callbackContext.error("Could not connect to " + macAddress); } }
public void consume(CordovaArgs args, final CallbackContext ctx) { String productId = args.optString(0); if (productId == null) { ctx.sendPluginResult(new PluginResult(Status.ERROR, "Invalid argument")); return; } int quantity = args.optInt(1); if (quantity < 1) { quantity = 1; } service.consume(productId, quantity, new InAppService.ConsumeCallback() { @Override public void onComplete(int consumed, Error error) { if (error != null) { ctx.sendPluginResult(new PluginResult(Status.ERROR, errorToJSON(error))); } else { ctx.sendPluginResult(new PluginResult(Status.OK, consumed)); } } }); }
private void setPaused(CordovaArgs args, final CallbackContext callbackContext) throws JSONException { int socketId = args.getInt(0); boolean paused = args.getBoolean(1); ChromeBluetoothSocketSocket socket = sockets.get(socketId); if (socket == null) { callbackContext.error("Invalid Argument"); return; } socket.setPaused(paused); callbackContext.success(); }
public void setValidationHandler(CordovaArgs args, final CallbackContext ctx) { boolean noValidation = args.optBoolean(0); if (noValidation) { service.setValidationHandler(null); return; } service.setValidationHandler(new InAppService.ValidationHandler() { @Override public void onValidate(String receipt, String productId, ValidationCompletion completion) { int completionId = validationIndex++; validationCompletions.put(completionId, completion); JSONArray array = new JSONArray(); array.put(receipt); array.put(productId); array.put(completionId); PluginResult result = new PluginResult(Status.OK, array); result.setKeepCallback(true); ctx.sendPluginResult(result); } }); }
private void writeCharacteristicValue(CordovaArgs args, final CallbackContext callbackContext) throws JSONException { final String characteristicId = args.getString(0); String deviceAddress = getDeviceAddressFromInstanceId(characteristicId); final byte[] value = args.getArrayBuffer(1); final ChromeBluetoothLowEnergyPeripheral peripheral = getPeripheralByDeviceAddress(deviceAddress); if (peripheral == null) { callbackContext.error("Invalid Argument"); return; } cordova.getThreadPool().execute(new Runnable() { public void run() { peripheral.writeCharacteristicValue(characteristicId, value, callbackContext); } }); }
private void stopCharacteristicNotifications(CordovaArgs args, final CallbackContext callbackContext) throws JSONException { final String characteristicId = args.getString(0); String deviceAddress = getDeviceAddressFromInstanceId(characteristicId); final ChromeBluetoothLowEnergyPeripheral peripheral = getPeripheralByDeviceAddress(deviceAddress); if (peripheral == null) { callbackContext.error("Invalid Argument"); return; } cordova.getThreadPool().execute(new Runnable() { public void run() { peripheral.setCharacteristicNotification(characteristicId, false, callbackContext); } }); }
private void readDescriptorValue(CordovaArgs args, final CallbackContext callbackContext) throws JSONException { final String descriptorId = args.getString(0); String deviceAddress = getDeviceAddressFromInstanceId(descriptorId); final ChromeBluetoothLowEnergyPeripheral peripheral = getPeripheralByDeviceAddress(deviceAddress); if (peripheral == null) { callbackContext.error("Invalid Argument"); return; } cordova.getThreadPool().execute(new Runnable() { public void run() { peripheral.readDescriptorValue(descriptorId, callbackContext); } }); }
private void writeDescriptorValue(CordovaArgs args, final CallbackContext callbackContext) throws JSONException { final String descriptorId = args.getString(0); String deviceAddress = getDeviceAddressFromInstanceId(descriptorId); final byte[] value = args.getArrayBuffer(1); final ChromeBluetoothLowEnergyPeripheral peripheral = getPeripheralByDeviceAddress(deviceAddress); if (peripheral == null) { callbackContext.error("Invalid Argument"); return; } cordova.getThreadPool().execute(new Runnable() { public void run() { peripheral.writeDescriptorValue(descriptorId, value, callbackContext); } }); }
private void controlTransfer(CordovaArgs args, JSONObject params, final CallbackContext callbackContext) throws JSONException, UsbError { ConnectedDevice dev = getDevice(params); int direction = directionFromName(params.getString("direction")); int requestType = controlRequestTypeFromName(params.getString("requestType")); int recipient = recipientFromName(params.getString("recipient")); byte[] transferBuffer = getByteBufferForTransfer(args, params, UsbConstants.USB_DIR_OUT); byte[] receiveBuffer = getByteBufferForTransfer(args, params, UsbConstants.USB_DIR_IN); int ret = dev.controlTransfer( direction | requestType | recipient, params.getInt("request"), params.getInt("value"), params.getInt("index"), transferBuffer, receiveBuffer, params.getInt("timeout")); if (ret < 0) { throw new UsbError("Control transfer returned " + ret); } /* control transfer is bidirectional, buffer should alway be passed */ callbackContext.success(Arrays.copyOf(receiveBuffer, receiveBuffer.length)); }
@Override public boolean execute(String action, CordovaArgs args, final CallbackContext callbackContext) throws JSONException { if ("startup".equals(action)) { // The onPageStarted event of CordovaWebViewClient resets the queue of messages to be returned to javascript in response // to exec calls. Since this event occurs on the UI thread and exec calls happen on the WebCore thread it is possible // that onPageStarted occurs after exec calls have started happening on a new page, which can cause the message queue // to be reset between the queuing of a new message and its retrieval by javascript. To avoid this from happening, // javascript always sends a "startup" exec upon loading a new page which causes all future exec calls to happen on the UI // thread (and hence after onPageStarted) until there are no more pending exec calls remaining. numPendingUiExecs.getAndIncrement(); ctx.getActivity().runOnUiThread(new Runnable() { public void run() { numPendingUiExecs.getAndDecrement(); } }); return true; } return false; }
private void setPaused(CordovaArgs args, final CallbackContext callbackContext) throws JSONException { int socketId = args.getInt(0); boolean paused = args.getBoolean(1); TcpServerSocket socket = sockets.get(Integer.valueOf(socketId)); if (socket == null) { Log.e(LOG_TAG, "No socket with socketId " + socketId); return; } socket.setPaused(paused); if (paused) { // Accept interest will be removed when socket is acceptable on selector thread. callbackContext.success(); } else { // All interests need to be modified in selector thread. addSelectorMessage(socket, SelectorMessageType.SO_ADD_ACCEPT_INTEREST, callbackContext); } }
@Override public boolean execute(String action, CordovaArgs args, final CallbackContext callbackContext) throws JSONException { if ("get".equals(action)) { get(args, callbackContext); return true; } else if ("getBytesInUse".equals(action)) { getBytesInUse(args, callbackContext); return true; } else if ("set".equals(action)) { set(args, callbackContext); return true; } else if ("remove".equals(action)) { remove(args, callbackContext); return true; } else if ("clear".equals(action)) { clear(args, callbackContext); return true; } return false; }
@Override public boolean execute(String action, CordovaArgs args, final CallbackContext callbackContext) throws JSONException { if ("create".equals(action)) { create(args, callbackContext); } else if ("update".equals(action)) { update(args, callbackContext); } else if ("setPaused".equals(action)) { setPaused(args, callbackContext); } else if ("listen".equals(action)) { listen(args, callbackContext); } else if ("disconnect".equals(action)) { disconnect(args, callbackContext); } else if ("close".equals(action)) { close(args, callbackContext); } else if ("getInfo".equals(action)) { getInfo(args, callbackContext); } else if ("getSockets".equals(action)) { getSockets(args, callbackContext); } else if ("registerAcceptEvents".equals(action)) { registerAcceptEvents(args, callbackContext); } else { return false; } return true; }
@Override public boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) throws JSONException { if (action.equals(ACTION_OPEN)) { chooseFile(callbackContext, args.getString(0)); return true; } return false; }
public static NavigationOption parseArgs(CordovaArgs args) { try { double[] startPosition = parsePosition(args.getJSONObject(0)); double[] endPosition = parsePosition(args.getJSONObject(1)); int type = args.getInt(2); return new NavigationOption(startPosition, endPosition, type); } catch (JSONException ignored) { } return null; }
@Override public boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) throws JSONException { if (!JS_INIT_COMMAND.equals(action)) { return false; } defaultCallback = callbackContext; if (updateRequested) { fetchUpdate(); } return true; }
/** * 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. */ @Override public boolean execute(String action, CordovaArgs args, final CallbackContext callbackContext) throws JSONException { Log.v(TAG, "Executing action: " + action); final Activity activity = this.cordova.getActivity(); final Window window = activity.getWindow(); if ("_ready".equals(action)) { boolean statusBarVisible = (window.getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) == 0; callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, statusBarVisible)); } if ("show".equals(action)) { this.cordova.getActivity().runOnUiThread(new Runnable() { @Override public void run() { window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); } }); return true; } if ("hide".equals(action)) { this.cordova.getActivity().runOnUiThread(new Runnable() { @Override public void run() { window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); } }); return true; } return false; }