diff --git a/zh-cn/native_sdk/input/oh_input_manager.h b/zh-cn/native_sdk/input/oh_input_manager.h index c1e6b8a843cc13c3b1758c2938d9101b843550d2..75bfb562e3f2e7e8e4d7003db09b6aff75c1e2bf 100644 --- a/zh-cn/native_sdk/input/oh_input_manager.h +++ b/zh-cn/native_sdk/input/oh_input_manager.h @@ -147,6 +147,20 @@ typedef enum Input_TouchEventAction { TOUCH_ACTION_UP = 3, } Input_TouchEventAction; +/** + * @brief 注入权限状态枚举值。 + * + * @since 20 + */ +typedef enum Input_InjectionStatus { + /** 未授权。 */ + UNAUTHORIZED = 0, + /** 授权中。 */ + AUTHORIZING = 1, + /** 已授权。 */ + AUTHORIZED = 2, +} Input_InjectionStatus; + /** * @brief 输入事件源类型。 * @@ -272,7 +286,27 @@ typedef enum Input_Result { * @error 未连接键盘设备。 * @since 15 */ - INPUT_KEYBOARD_DEVICE_NOT_EXIST = 3900002 + INPUT_KEYBOARD_DEVICE_NOT_EXIST = 3900002, + /** + * @error 正在授权中。 + * @since 20 + */ + INPUT_INJECTION_AUTHORIZING = 3900005, + /** + * @error 重复请求。 + * @since 20 + */ + INPUT_INJECTION_OPERATION_FREQUENT = 3900006, + /** + * @error 当前应用已经授权。 + * @since 20 + */ + INPUT_INJECTION_AUTHORIZED = 3900007, + /** + * @error 其它应用已经授权。 + * @since 20 + */ + INPUT_INJECTION_AUTHORIZED_OTHERS = 3900008, } Input_Result; /** @@ -338,6 +372,13 @@ typedef void (*Input_DeviceAddedCallback)(int32_t deviceId); */ typedef void (*Input_DeviceRemovedCallback)(int32_t deviceId); +/** + * @brief 回调函数,用于获取注入权限状态。 + * @param authorizedStatus 注入权限状态。 + * @since 20 + */ +typedef void (*Input_InjectAuthorizeCallback)(Input_InjectionStatus authorizedStatus); + /** * @brief 拦截回调事件结构体,拦截鼠标事件、触屏事件和轴事件。 * @since 12 @@ -1036,6 +1077,38 @@ int32_t OH_Input_GetTouchEventDisplayId(const struct Input_TouchEvent* touchEven */ void OH_Input_CancelInjection(); +/** + * @brief 当前应用申请注入权限,包括申请注入按键事件{@link OH_Input_InjectKeyEvent}、注入触屏事件{@link OH_Input_InjectTouchEvent}、 + * 注入鼠标事件{@link OH_Input_InjectMouseEvent}等注入操作的权限。 + * 该接口仅在PC/2in1设备上生效。 + * + * @param callback - 授权状态回调,具体请参考{@link Input_InjectAuthorizeCallback}。 + * @return 返回结果码,参见{@link Input_Result}。 + * INPUT_SUCCESS = 0 申请授权成功,等待用户授权结果并回调授权状态。\n + * INPUT_PARAMETER_ERROR = 401 参数错误,参数callback为空。\n + * INPUT_DEVICE_NOT_SUPPORTED = 801 设备不支持。\n + * INPUT_SERVICE_EXCEPTION = 3800001 服务器错误。\n + * INPUT_INJECTION_AUTHORIZING = 3900005 正在授权中。\n + * INPUT_INJECTION_OPERATION_FREQUENT = 3900006 重复请求(当前应用连续申请授权弹窗成功,间隔时间不超过3秒)。\n + * INPUT_INJECTION_AUTHORIZED = 3900007 当前应用已经授权。\n + * INPUT_INJECTION_AUTHORIZED_OTHERS = 3900008 其它应用已经授权。\n + * @since 20 + */ + +Input_Result OH_Input_RequestInjection(Input_InjectAuthorizeCallback callback); + +/** + * @brief 查询当前应用注入的权限状态。 + * + * @param status 当前应用注入权限状态。参见{@link Input_InjectionStatus}。 + * @return 返回结果码,参见{@link Input_Result}。 + * INPUT_SUCCESS = 0 查询成功。\n + * INPUT_PARAMETER_ERROR = 401 参数错误,参数status为空。\n + * INPUT_SERVICE_EXCEPTION = 3800001 服务器错误。\n + * @since 20 + */ +Input_Result OH_Input_QueryAuthorizedStatus(Input_InjectionStatus* status); + /** * @brief 创建轴事件对象实例。 *