public void run() {
                if (action.equals("ready")) {
                    deviceready();
                } else if (action.equals("createChannel")) {
                    createChannel(args, callbackContext);
                } else if (action.equals("deleteChannel")) {
                    deleteChannel(args, callbackContext);
                } else if (action.equals("hasPermission")) {
                    hasPermission(callbackContext);
                } else if (action.equals("requestPermission")) {
                    requestPermission(callbackContext);
                } else if (action.equals("actions")) {
                    actions(args, callbackContext);
                } else if (action.equals("schedule")) {
                    schedule(args, callbackContext);
                } else if (action.equals("update")) {
                    update(args, callbackContext);
                } else if (action.equals("cancel")) {
                    cancel(args, callbackContext);
                } else if (action.equals("cancelAll")) {
                    cancelAll(callbackContext);
                } else if (action.equals("clear")) {
                    clear(args, callbackContext);
                } else if (action.equals("clearAll")) {
                    clearAll(callbackContext);
                } else if (action.equals("type")) {
                    type(args, callbackContext);
                } else if (action.equals("ids")) {
                    ids(args, callbackContext);
                } else if (action.equals("notification")) {
                    notification(args, callbackContext);
                } else if (action.equals("notifications")) {
                    notifications(args, callbackContext);
                } else if (action.equals("canScheduleExactAlarms")) {
                    canScheduleExactAlarms(callbackContext);
                } else if (action.equals("openNotificationSettings")) {
                    openNotificationSettings(callbackContext);
                } else if (action.equals("openAlarmSettings")) {
                    openAlarmSettings(callbackContext);
                } else if (action.equals("getUnusedAppRestrictionsStatus")) {
                    getUnusedAppRestrictionsStatus(callbackContext);
                } else if (action.equals("openManageUnusedAppRestrictions")) {
                    openManageUnusedAppRestrictions(callbackContext);
                }
            }
Executes the request.

This method is called from the WebView thread. To do a non-trivial
amount of work, use:
     cordova.getThreadPool().execute(runnable);

To run on the UI thread, use:
    cordova.getActivity().runOnUiThread(runnable);

@param action  The action to execute.
@param args    The exec() arguments in JSON form.
@param callbackContext The callback context used when calling back into JavaScript.

@return Whether the action was valid.
src/android/LocalNotification.java