private void handlePermissionResult(final Map<String, Boolean> result) {
        Log.d("PermissionAction result:" + result);
        final ParcelableValue<T> parameterHolder = this.savedState.get().getParcelable(PARAMETER_KEY);
        final T parameter = parameterHolder == null ? null : parameterHolder.get();
        if (this.permissionContext.hasAllPermissions()) {
            //-> we have permissions now, execute callback
            if (callback != null) {
                callback.accept(parameter);
            }
            this.savedState.clear();
        } else {
            //-> we still don't have necessary permissions -> show explanation and ask user again
            SimpleDialog.of(activity).setTitle(TextParam.text(permissionContext.getExplanationTitle()))
                    .setMessage(permissionContext.getExplanation())
                    .setPositiveButton(TextParam.id(R.string.permission_ask_again))
                    .setNegativeButton(TextParam.id(R.string.cancel))
                    .setNeutralButton(TextParam.id(R.string.permission_goto_app_details))
                    .setNeutralAction(this::openApplicationSettings)
                    .show(() -> launchPermissionRequest(parameter));
        }

    }
launches the formerly registered permission action with a user-defined parameter.
The parameter will be passed to the action code
main/src/main/java/cgeo/geocaching/permission/PermissionAction.java