【共创季稿事节】HarmonyOS 6.1 意图框架(Intent Framework)接入实战
文章目录每日一句正能量摘要一、意图框架概述1.1 从找应用到找能力1.2 意图框架的三层模型1.3 意图框架的核心价值二、意图注册让系统认识你2.1 注册原理2.2 module.json5 配置详解2.3 注册配置示意图三、意图识别让系统理解用户3.1 意图解析流程3.2 自然语言到意图的映射示例3.3 意图参数兜底策略四、跨应用跳转与数据传递4.1 通过 Intent 唤起其他应用4.2 URI Scheme 深度跳转4.3 带返回结果的意图调用五、系统级入口接入实战5.1 接入小艺建议Celia Suggestions5.2 接入智慧搜索5.3 接入系统分享面板六、跳转效果与交互体验6.1 跳转动画配置6.2 跳转效果示意图七、意图框架最佳实践7.1 注册规范7.2 体验优化7.3 安全与隐私八、总结每日一句正能量不偏执于一条路不固执于一种想法才能在变化的世界中找到属于自己的出路。世界充满变数执念是痛苦的根源也是视野的牢笼。灵活不是善变而是基于对现实的清醒认知懂得调整策略。出路往往不在原定计划的终点而在拐弯处的发现。摘要摘要HarmonyOS 6.1 的意图框架Intent Framework是系统级智能分发能力的核心基础设施。它让应用不再依赖固定的图标入口而是通过意图这一语义化的交互契约被系统在恰当的时机、恰当的入口、以恰当的方式唤起。本文从原理到实践完整讲解意图的注册、识别、解析与跨应用跳转全链路并演示如何将应用接入小艺建议、智慧搜索、系统分享面板等关键系统入口。一、意图框架概述1.1 从找应用到找能力传统移动生态中用户与应用的交互路径高度依赖图标记忆——用户需要知道某个功能在哪个 App 里然后找到图标、打开应用、再找到具体功能。这种模式的痛点在于发现成本高应用越多找到目标功能的成本越高入口割裂同样的能力如打车分散在多个应用中用户需要反复比较场景断裂用户正在 A 应用中想使用 B 应用的能力必须切换上下文。HarmonyOS 6.1 的意图框架Intent Framework试图打破这一困局。它的核心理念是系统不关心功能在哪个应用里只关心用户需要什么能力。1.2 意图框架的三层模型上图展示了意图框架的完整流转链路。用户通过自然语言或系统入口表达意图系统经过意图理解、应用匹配、能力路由最终唤起目标应用的具体功能页面。意图框架可分为三层层级职责核心模块意图表达层接收用户意图输入语音、文字、手势、上下文小艺助手、智慧搜索、系统分享面板意图解析层理解意图语义提取实体参数确定目标能力Intent Resolver、NLP Engine、Entity Extractor能力路由层匹配注册该能力的应用按优先级排序执行跳转Ability Manager、App Ranker、Deep Link Router1.3 意图框架的核心价值价值点说明去中心化发现应用能力可被系统全局索引不依赖用户主动打开应用场景化触发基于时间、地点、设备状态等上下文自动推荐能力跨应用协同应用 A 可直接唤起应用 B 的某个功能数据无缝传递自然语言入口用户通过说话或打字即可直达功能无需记忆应用名称二、意图注册让系统认识你2.1 注册原理意图注册的本质是向系统声明我的应用能提供什么能力。开发者需要在module.json5中声明意图能力Intent Ability并在代码中实现对应的意图处理器Intent Handler。2.2 module.json5 配置详解{ module: { abilities: [ { name: OrderDetailAbility, srcEntry: ./ets/entryability/OrderDetailAbility.ets, description: $string:OrderDetailAbility_desc, icon: $media:icon, label: $string:OrderDetailAbility_label, startWindowIcon: $media:icon, startWindowBackground: $color:start_window_background, exported: true, skills: [ { actions: [ ohos.intent.action.VIEW_ORDER ], entities: [ ohos.intent.entity.FOOD_DELIVERY ], uris: [ { scheme: harmonyfood, host: order, path: /detail } ] } ], intents: [ { intentName: QueryOrderStatus, entities: [orderId, shopName], parameters: [ { name: orderId, type: string, required: true, description: 订单编号 }, { name: shopName, type: string, required: false, description: 商家名称 } ] }, { intentName: ReorderMeal, entities: [shopId, dishList], parameters: [ { name: shopId, type: string, required: true }, { name: dishList, type: array, required: false } ] } ] } ] } }配置项解析skills.actions声明该 Ability 响应的标准动作如VIEW_ORDER查看订单、CREATE_ORDER创建订单skills.entities声明该 Ability 处理的实体类型如FOOD_DELIVERY外卖、RIDE_HAILING打车skills.uris声明 Deep Link URI支持自定义 Schemeintents声明意图能力包括意图名称、实体参数和参数类型约束。2.3 注册配置示意图上图直观展示了module.json5中意图注册的关键字段。左侧为标准动作与实体声明右侧为意图参数定义。正确的注册是应用被系统识别的第一步。三、意图识别让系统理解用户3.1 意图解析流程当用户通过语音或文字表达需求时系统会经历以下解析流程意图分类NLP 引擎判断用户意图属于哪个大类查询、下单、导航、播放等实体抽取从用户输入中提取关键参数如订单号、商家名、目的地参数校验检查提取的参数是否满足已注册意图的参数约束应用匹配根据意图名称和实体类型匹配注册了对应能力的应用优先级排序按应用活跃度、用户偏好、开发者权重排序路由执行构建 Want 对象唤起目标 Ability。3.2 自然语言到意图的映射示例用户输入解析意图提取实体目标 Ability“帮我查一下订单 12345”QueryOrderStatusorderId12345OrderDetailAbility“我想再点一份肯德基”ReorderMealshopName肯德基ShopPageAbility“显示我最近的外卖到哪了”QueryOrderStatusorderIdlatestOrderDetailAbility“打开配送地图”ViewDeliveryMaporderIdcurrentDeliveryMapAbility3.3 意图参数兜底策略当用户输入缺少必需参数时应用应优雅处理// entryability/OrderDetailAbility.etsimport{UIAbility,Want}fromkit.AbilityKit;exportdefaultclassOrderDetailAbilityextendsUIAbility{onCreate(want:Want):void{constorderIdwant.parameters?.[orderId]asstring;if(!orderId){// 参数缺失打开订单列表页让用户选择this.context.startAbility({bundleName:com.example.food,abilityName:OrderListAbility});return;}if(orderIdlatest||orderIdcurrent){// 相对时间词查询最新订单this.loadLatestOrder();return;}// 正常加载指定订单this.loadOrderDetail(orderId);}privateasyncloadLatestOrder():Promisevoid{// 从本地缓存或服务端获取最近订单constlatestOrderawaitOrderService.getLatestOrder();this.loadOrderDetail(latestOrder.id);}privateloadOrderDetail(orderId:string):void{// 加载订单详情页面console.info([Intent] 加载订单详情:${orderId});}}四、跨应用跳转与数据传递4.1 通过 Intent 唤起其他应用应用 A 可以通过意图框架唤起应用 B 的特定功能无需知道应用 B 的具体包名// 在应用 A 中唤起外卖订单详情系统会自动匹配合适的应用import{Want}fromkit.AbilityKit;asyncfunctionopenOrderDetail(orderId:string):Promisevoid{constwant:Want{action:ohos.intent.action.VIEW_ORDER,entities:[ohos.intent.entity.FOOD_DELIVERY],parameters:{orderId:orderId,source:partner_app}};constcontextgetContext(this);try{awaitcontext.startAbility(want);console.info([Intent] 跨应用跳转成功);}catch(err){// 没有匹配应用时的降级处理console.error([Intent] 跳转失败可能未安装外卖应用);promptAction.showToast({message:请先安装外卖应用});}}4.2 URI Scheme 深度跳转除了标准动作还可以通过自定义 URI Scheme 实现精确跳转// 唤起外卖应用并直接打开地图页面constwant:Want{uri:harmonyfood://order/map?orderId12345showRidertrue};// 目标应用 Ability 中解析 URIonCreate(want:Want):void{consturiwant.uri;if(uri){consturlnewURL(uri);constorderIdurl.searchParams.get(orderId);constshowRiderurl.searchParams.get(showRider)true;this.openMapPage(orderId,showRider);}}4.3 带返回结果的意图调用当需要获取目标应用的处理结果时使用startAbilityForResult// 唤起支付应用并等待支付结果asyncfunctioninvokePayment(orderId:string,amount:number):Promiseboolean{constwant:Want{action:ohos.intent.action.PAY,entities:[ohos.intent.entity.PAYMENT],parameters:{orderId,amount}};constcontextgetContext(this);try{constresultawaitcontext.startAbilityForResult(want,{requestCode:1001});returnresult.resultCode0;// 0 表示支付成功}catch(err){console.error([Intent] 支付调用失败:,err);returnfalse;}}五、系统级入口接入实战5.1 接入小艺建议Celia Suggestions小艺建议是系统级智能推荐卡片会根据用户习惯在桌面、负一屏等位置展示建议。// services/CeliaSuggestion.etsimport{suggestion}fromkit.IntelligenceKit;exportclassCeliaSuggestionHelper{// 向小艺建议注册动态内容staticasyncregisterOrderSuggestion(order:Order):Promisevoid{constsuggestionItem{id:order_${order.id},title:${order.shopName}订单,subtitle:预计${order.etaMinutes}分钟送达,icon:$r(app.media.ic_delivery),intent:{action:ohos.intent.action.VIEW_ORDER,parameters:{orderId:order.id}},// 展示规则displayRules:{timeRange:{start:Date.now(),end:Date.now()60*60*1000},scenario:[lock_screen,negative_screen,notification_center]}};awaitsuggestion.publish(suggestionItem);}// 订单完成后移除建议staticasyncremoveSuggestion(orderId:string):Promisevoid{awaitsuggestion.revoke(order_${orderId});}}5.2 接入智慧搜索让应用内容可被系统全局搜索索引// 在 Ability 中处理搜索意图onCreate(want:Want):void{constactionwant.action;if(actionohos.intent.action.SEARCH){constquerywant.parameters?.[query]asstring;this.handleGlobalSearch(query);}}privatehandleGlobalSearch(query:string):void{// 在应用内执行搜索SearchService.search(query).then((results){// 将搜索结果返回给系统搜索页面this.context.terminateSelfWithResult({resultCode:0,want:{parameters:{searchResults:JSON.stringify(results)}}});});}5.3 接入系统分享面板让应用的能力出现在系统分享菜单中// module.json5 中注册分享能力{abilities:[{name:ShareAbility,skills:[{actions:[ohos.intent.action.SEND],entities:[ohos.intent.entity.SHARE],uris:[{scheme:harmonyfood,host:share}]}]}]}// ShareAbility.etsexportdefaultclassShareAbilityextendsUIAbility{onCreate(want:Want):void{constsharedTextwant.parameters?.[sharedText]asstring;constsharedImagewant.parameters?.[sharedImage]asstring;// 打开分享编辑页this.context.startAbility({bundleName:com.example.food,abilityName:ShareEditAbility,parameters:{sharedText,sharedImage}});}}六、跳转效果与交互体验6.1 跳转动画配置意图框架支持自定义跳转动画提升跨应用跳转的连贯性import{window}fromkit.WindowManager;onWindowStageCreate(windowStage:window.WindowStage):void{windowStage.getMainWindow().then((win){win.setTransitionAnimation({type:window.TransitionType.SLIDE,direction:window.TransitionDirection.RIGHT,duration:300,curve:Curve.EaseInOut});});}6.2 跳转效果示意图上图展示了通过意图框架从系统搜索直达应用订单详情页的跳转效果。整个过程流畅自然用户无需手动打开应用、无需在应用内再次搜索实现了意图即入口的体验闭环。七、意图框架最佳实践7.1 注册规范实践说明意图命名标准化遵循Verb Noun结构如QueryOrderStatus、CreateAppointment参数最小化仅声明业务必需的参数可选参数标记required: falseURI 稳定性自定义 Scheme 一旦发布不得变更避免已有外部链接失效动作复用优先使用系统标准动作如VIEW、SEND、SEARCH减少自定义动作7.2 体验优化优化项说明参数兜底缺少必需参数时不要直接报错而是引导用户补全加载态意图跳转涉及跨应用调度需展示加载指示器返回路径跨应用跳转后用户按返回键应回到原应用而非桌面上下文保留唤起目标应用时传递来源标识便于目标应用做个性化处理7.3 安全与隐私注意点措施参数校验所有通过 Intent 传入的参数必须做合法性校验权限控制敏感操作如支付、删除需在 Intent Handler 中再次校验权限exported 控制仅将需要对外暴露的 Ability 标记exported: true数据脱敏通过 Intent 传递的数据避免包含用户敏感信息八、总结HarmonyOS 6.1 的意图框架是连接用户、系统与应用的智能高速公路。它让应用从被动等待打开转变为主动响应需求是鸿蒙生态从应用为中心向服务为中心演进的关键基础设施。本文从注册、识别、跳转到系统入口接入完整演示了意图框架的实战路径意图注册在module.json5中通过skills和intents声明能力契约意图识别系统通过 NLP 引擎解析用户输入匹配注册的能力跨应用跳转使用标准动作或 URI Scheme 实现应用间的无缝调用系统入口接入小艺建议、智慧搜索、系统分享面板获取流量曝光体验打磨优化跳转动画、参数兜底、返回路径保障交互连贯性。开发者行动清单梳理应用的核心能力按Verb Noun规范命名意图在module.json5中注册标准动作、实体类型和 URI Scheme为每个意图定义清晰的参数约束和兜底策略实现 Ability 的onCreate/onNewWant正确处理意图参数接入小艺建议让应用在合适场景主动出现在用户面前注册系统分享能力出现在分享面板中配置跳转动画让跨应用跳转更加自然流畅做好参数校验和安全控制防止 Intent 注入攻击。意图框架的潜力远不止于此。随着小艺大模型能力的持续增强未来的鸿蒙生态将支持更加复杂的自然语言意图理解——用户只需说帮我找一家评分 4.5 以上、30 分钟内能送达的川菜馆系统就能自动解析多重约束条件匹配最合适的应用与功能。现在接入意图框架就是在为未来的智能分发时代布局。转载自https://blog.csdn.net/u014727709/article/details/162937698欢迎 点赞✍评论⭐收藏欢迎指正