文档知识库教程OpenHarmony【免费下载链接】CangjieCorpus本仓库为仓颉编程语言语料库聚焦 仓颉编程语言 核心知识体系整合官方开发指南、API 文档、典型代码示例及语法规范等多维度资源经结构化处理与专业标注构建为支持 RAG检索增强生成技术 的高质量知识基座适配智能编码助手、学习辅助工具等应用开发需求。 欢迎开发者基于本语料库构建仓颉语言智能应用推动鸿蒙开发生态智能化升级项目地址https://gitcode.com/Cangjie/CangjieCorpus点击查看免费下载本文以 OpenHarmony/仓颉 Ability Kit 中的ohos.app.ability.dialog_request模块为对象系统讲解模态弹框请求的结果载体RequestResult、结果码枚举ResultCode及其在requestDialogService调用链中的实际作用。读完本文你将掌握如何在仓颉工程中导入该模块、理解模态弹框的权限与系统能力约束并能结合错误码表对调用失败场景进行定位。模块概述模态弹框请求结果的处理入口dialog_request模块用于处理模态弹框Modal Dialog的能力具体包括两类职责获取RequestInfo用于绑定模态弹框与获取RequestCallback用于设置结果。该模块是 Ability Kit 中启动“支持模态弹框的 ServiceExtensionAbility”流程的配套类型定义所在应用侧发起请求后通过回调拿到RequestResult再依据其中的ResultCode判断弹框结果是成功还是取消。关于模态弹框的定义官方文档给出明确说明模态弹框是一个系统弹框该弹框会拦截弹框之下的页面的鼠标、键盘、触屏等事件。销毁该弹框后才能对页面进行操作。也就是说模态弹框一旦弹出其下层 UI 处于“事件隔离”状态用户必须处理该弹框确认、取消或销毁才能继续与页面交互。这与 ArkUI 中通过isModal属性控制的模态/非模态弹窗参见 cj-common-components-custom-dialog.md在概念上一脉相承但本模块特指 Ability 侧与 ServiceExtensionAbility 配合的系统级模态弹框请求场景。导入模块在仓颉代码中使用dialog_request提供的类型需要按 Kit 封装方式导入import kit.AbilityKit.*Ability Kit程序框架服务当前为 Beta 特性其仓颉 API 还包括ui_ability、want、ability_stage、start_options等模块完整清单可参考 AbilityKit 目录索引。Kit 对同一 Kit 下的接口模块进行了统一封装示例代码中可通过导入 Kit 的方式使用其所包含的接口能力。权限列表使用本模块相关能力时涉及以下权限声明对应module.json5中requestPermissions的权限名权限说明ohos.permission.DISTRIBUTED_DATASYNC分布式数据同步相关权限ohos.permission.PREPARE_APP_TERMINATE应用终止准备相关权限ohos.permission.PRIVACY_WINDOW隐私窗口相关权限需要说明的是权限列表是文档声明层面的约束具体权限是否必须申请取决于实际调用链例如启动 ServiceExtensionAbility 时是否涉及受保护能力开发时应以实际运行时的授权校验结果为准。系统能力与起始版本模块内各类型与成员均声明了相同的系统能力与起始版本约束系统能力SystemCapability.Ability.AbilityRuntime.Core起始版本22这意味着该模块的 API 从 OpenHarmony 版本 22 开始提供且依赖 Ability 运行时核心能力AbilityRuntime.Core。若目标设备或 SDK 版本低于 22相关接口与类型不可用跨设备开发时还需确认设备是否具备该系统能力可参考仓库中的 cj-phone-syscap-list.md 与 cj-tablet-syscap-list.md 能力清单。示例代码运行说明本模块文档中的示例代码并非完整程序而是对应 API 的主要代码片段。若要编译运行需将示例拷贝到仓颉模板工程中遵循以下规则若示例代码首行带有// index.cj注释表示该示例可在仓颉模板工程的index.cj文件中编译运行若示例需获取 Context 应用上下文需在仓颉模板工程的main_ability.cj文件中进行配置。上述示例工程及配置模板的完整说明见 仓颉示例代码说明。其操作要点如下创建一个仓颉模板工程创建完成后会生成index.cj、main_ability.cj、ability_stage.cj三个模板文件在index.cj的对应位置添加示例代码同时导入所涉及的包若示例涉及Context对象则在main_ability.cj中定义Global类并对其赋值例如在其中继承UIAbility并完成上下文注册。class RequestResult模态弹框请求结果RequestResult是requestDialogService回调中携带的数据类型封装了结果码与请求结果 Want 信息。public class RequestResult { public var result: ResultCode public var want: Want }功能模态弹框请求结果包含结果码ResultCode和请求结果Want。系统能力SystemCapability.Ability.AbilityRuntime.Core起始版本22var resultpublic var result: ResultCode功能表示结果码即模态弹框的最终处理结果成功或取消。类型ResultCode见下文枚举说明读写能力可读写系统能力SystemCapability.Ability.AbilityRuntime.Core起始版本22var wantpublic var want: Want功能表示 Want 类型信息如 ability 名称、包名等。类型Want读写能力可读写系统能力SystemCapability.Ability.AbilityRuntime.Core起始版本22Want是对象间信息传递的载体可用于应用组件间的信息传递。其典型字段包括deviceId、bundleName、abilityName、moduleName、flags、uri、action、entities、dataType与parameters等完整的类定义见 Want 类定义。在模态弹框场景下回调返回的want通常携带被处理请求的组件标识与参数信息应用侧可据此识别弹框对应的业务请求。enum ResultCode模态弹框请求结果码public enum ResultCode { | ResultOk | ResultCancel | ... }功能模态弹框请求结果码。系统能力SystemCapability.Ability.AbilityRuntime.Core起始版本22ResultCancelResultCancel功能表示失败请求未成功完成例如用户取消弹框或处理失败。系统能力SystemCapability.Ability.AbilityRuntime.Core起始版本22ResultOkResultOk功能表示成功模态弹框请求被成功处理。系统能力SystemCapability.Ability.AbilityRuntime.Core起始版本22从枚举声明中的...可以看出ResultCode预留了更多取值空间后续版本可能扩展更多结果码。业务侧在消费RequestResult时应优先基于ResultOk/ResultCancel两个已定义取值进行分支判断并对未知取值做兜底处理。调用链佐证requestDialogService 与 AsyncCallbackdialog_request模块本身主要定义结果相关的数据类型真正触发模态弹框请求的入口是UIAbilityContext上的requestDialogService接口定义见 ui_ability 模块public func requestDialogService(want: Want, result: AsyncCallbackRequestResult): Unit功能启动一个支持模态弹框的 ServiceExtensionAbility。ServiceExtensionAbility 被启动后应用弹出模态弹框。使用 callback 异步回调且仅支持在主线程调用。参数说明参数名类型必填默认值说明wantWant是-启动 ServiceExtensionAbility 的 Want 信息resultAsyncCallbackRequestResult是-回调函数启动成功时err中 code 为 0、data为模态弹框请求结果否则err返回对应的错误码和错误信息其中AsyncCallback的定义为见 cj-api-business_exception.mdpublic type AsyncCallbackT(OptionAsyncError, OptionT) - Unit即回调函数接收“可选的错误对象”与“可选的结果数据”两个参数符合 Option 风格的空值表达。官方给出的调用示例片段import kit.AbilityKit.* import kit.ArkUI.WindowStage import ohos.business_exception.BusinessException class MyUIAbility18 : UIAbility { public override func onWindowStageCreate(windowStage: WindowStage): Unit { this.context.requestDialogService(Want(), {err: ?BusinessException, data: ?RequestResult }) } }结合RequestResult与ResultCode完整的数据流可概括为应用在主线程调用requestDialogService传入描述目标 ServiceExtensionAbility 的Want系统拉起该 ServiceExtensionAbility 并弹出模态弹框期间拦截弹框之下页面的鼠标、键盘、触屏等事件弹框被处理确认/取消后系统通过AsyncCallback回传RequestResult应用侧读取resultResultCode判断ResultOk或ResultCancel并可通过want获取组件名称、包名等上下文信息。错误码与排障requestDialogService抛出BusinessException时涉及通用错误码与元能力子系统错误码两类完整对照表见 元能力子系统错误码 与 通用错误码说明文档。常用错误码如下错误码 ID错误信息典型场景201The application does not have permission to call the interface.应用缺少调用该接口所需的权限16000001The specified ability does not exist.Want 指定的 Ability 不存在16000002Incorrect ability type.接口调用所在 Ability 类型不支持该调用16000004Cannot start an invisible component.目标组件不可见如exported配置为 false16000005The specified process does not have the permission.指定进程权限校验失败16000006Cross-user operations are not allowed.不允许跨用户操作16000008The crowdtesting application expires.众测应用到期16000009An ability cannot be started or stopped in Wukong mode.Wukong 模式下不允许启动/停止 Ability16000010The call with the continuation and prepare continuation flag is forbidden.不允许携带迁移相关 flag16000011The context does not exist.上下文对象不存在16000012The application is controlled.应用被管控16000013The application is controlled by EDM.应用被 EDM 管控16000050Internal error.内部错误16000053The ability is not on the top of the UI.非顶层应用16000055Installation-free timed out.免安装超时16200001The caller has been released.通用组件客户端Caller已回收针对高频错误码仓库文档给出了具体排障步骤例如16000001Ability 不存在检查want中的bundleName、moduleName和abilityName是否正确使用hdc shell bm dump -a查询已安装应用列表确认 bundleName 对应应用已安装多 HAP 应用还需用hdc shell bm dump -n 包名确认 ability 所属 HAP 已安装。16000004可见性校验失败检查被拉应用的module.json5中 Ability 字段的exported配置——为true表示可被其他应用调用为false则不可。16000002Ability 类型错误确认接口调用所在的 Ability 类型支持该接口调用并根据 Ability 类型选择正确调用方式。小结ohos.app.ability.dialog_request模块为仓颉应用提供了模态弹框请求结果的标准化数据结构RequestResult负责承载“结果码 Want 信息”ResultCode负责表达成功/取消语义二者与UIAbilityContext.requestDialogService协同完成系统级模态弹框的发起与结果回传。开发时需注意三点一是确保 SDK 版本不低于 22 且设备具备SystemCapability.Ability.AbilityRuntime.Core能力二是严格在主线程调用requestDialogService三是按错误码表对BusinessException进行分类处理特别是 16000001/16000002/16000004 等与 Want 配置直接相关的错误。相关文档与源码位置cj-apis-app-ability-dialog_request.md本模块 API 定义cj-apis-app-ability-ui_ability.mdrequestDialogService接口与Context定义cj-apis-app-ability-want.mdWant类定义cj-errorcode-ability.md元能力子系统错误码说明cj-development-intro.md仓颉示例代码运行说明赞分享文档知识库教程OpenHarmony【免费下载链接】CangjieCorpus本仓库为仓颉编程语言语料库聚焦 仓颉编程语言 核心知识体系整合官方开发指南、API 文档、典型代码示例及语法规范等多维度资源经结构化处理与专业标注构建为支持 RAG检索增强生成技术 的高质量知识基座适配智能编码助手、学习辅助工具等应用开发需求。 欢迎开发者基于本语料库构建仓颉语言智能应用推动鸿蒙开发生态智能化升级项目地址https://gitcode.com/Cangjie/CangjieCorpus点击查看免费下载相关推荐PaddleSpeech 服务器 RESTful 请求模型深度解析paddlespeech.server.restful.request 模块全指南PaddleSpeech 服务器 RESTful 请求模型深度解析paddlespeech.server.restful.request 模块全指南 导读 P语音音频人工智能深度学习think-mock-http 源码解析ThinkJS 框架内置的 HTTP Mock 请求模块think mock http 源码解析ThinkJS 框架内置的 HTTP Mock 请求模块 导读 think mock http 是 ThinkJS 生后端Web框架Node.js请求体解析终极指南模块组合实战技巧在Node.js Web开发中高效处理HTTP请求体是构建健壮应用的关键环节。body parser作为Express生态中最流行的请求体解析中间件虽然不直后端上一篇Moodle 文本工具类Text Utilities实战指南从组件库文档到 Boost 主题源码验证下一篇修改ThinkPad风扇速度危险吗TPFanCtrl2安全指南与使用前必读的风险警告创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考