0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HarmonyOS 学习路之开发篇 ——Intent

王程 来源:jf_75796907 作者:jf_75796907 2024-02-20 14:52 次阅读

Intent

基本概念

Intent 是对象之间传递信息的载体。例如,当一个 Ability 需要启动另一个 Ability 时,或者一个 AbilitySlice 需要导航到另一个 AbilitySlice 时,可以通过 Intent 指定启动的目标同时携带相关数据。Intent 的构成元素包括 Operation 与 Parameters,具体描述参见表 1。

wKgaomXUS_6AdNTpAADjbc4OoZM532.png


表 1 Intent 的构成元素 当 Intent 用于发起请求时,根据指定元素的不同,分为两种类型:

如果同时指定了 BundleName 与 AbilityName,则根据 Ability 的全称(例如 “com.demoapp.FooAbility”)来直接启动应用。

如果未同时指定 BundleName 和 AbilityName,则根据 Operation 中的其他属性来启动应用。

说明 Intent 设置属性时,必须先使用 Operation 来设置属性。如果需要新增或修改属性,必须在设置 Operation
后再执行操作。

关于 Intent 最简单的使用方法,可参见快速入门的示例代码。其中 “实现页面跳转” 重点描述了使用 Intent 实现两个页面跳转关系的操作。

根据 Ability 的全称启动应用

通过构造包含 BundleName 与 AbilityName 的 Operation 对象,可以启动一个 Ability、并导航到该 Ability。示例代码如下:

Intent intent = new Intent();
// 通过Intent中的OperationBuilder类构造operation对象,指定设备标识(空串表示当前设备)、应用包名、Ability名称
Operation operation = new Intent.OperationBuilder()
        .withDeviceId("")
        .withBundleName("com.demoapp")
        .withAbilityName("com.demoapp.FooAbility")
        .build();
// 把operation设置到intent中
intent.setOperation(operation);
startAbility(intent);

作为处理请求的对象,会在相应的回调方法中接收请求方传递的 Intent 对象。以导航到另一个 Ability 为例,导航的目标 Ability 可以在其 onStart () 回调的参数中获得 Intent 对象。 根据 Operation 的其他属性启动应用 有些场景下,开发者需要在应用中使用其他应用提供的某种能力,而不感知提供该能力的具体是哪一个应用。例如开发者需要通过浏览器打开一个链接,而不关心用户最终选择哪一个浏览器应用,则可以通过 Operation 的其他属性(除 BundleName 与 AbilityName 之外的属性)描述需要的能力。如果设备上存在多个应用提供同种能力,系统则弹出候选列表,由用户选择由哪个应用处理请求。以下示例展示使用 Intent 跨 Ability 查询天气信息。

请求方

在 Ability 中构造 Intent 以及包含 Action 的 Operation 对象,并调用 startAbilityForResult () 方法发起请求。然后重写 onAbilityResult () 回调方法,对请求结果进行处理。

private void queryWeather() {
    Intent intent = new Intent();
    Operation operation = new Intent.OperationBuilder()
            .withAction(Intent.ACTION_QUERY_WEATHER)
            .build();
    intent.setOperation(operation);
    startAbilityForResult(intent, REQ_CODE_QUERY_WEATHER);
}
@Override
protected void onAbilityResult(int requestCode, int resultCode, Intent resultData) {
    switch (requestCode) {
        case REQ_CODE_QUERY_WEATHER:
            // Do something with result.
            ...
            return;
        default:
            ...
    }
}

处理方 1、作为处理请求的对象,首先需要在配置文件中声明对外提供的能力,以便系统据此找到自身并作为候选的请求处理者。

{
    "module": {
        ...
        "abilities": [
            {
                ...
                "skills":[
                    {
                        "actions":[
                            "ability.intent.QUERY_WEATHER"
                        ]
                    }
                ]
                ...
            }
        ]
        ...
    }
    ...
}

2、在 Ability 中配置路由以便支持以此 action 导航到对应的 AbilitySlice。

@Override
protected void onStart(Intent intent) {
    ...
    addActionRoute(Intent.ACTION_QUERY_WEATHER, DemoSlice.class.getName());
    ...
}

3、在 Ability 中处理请求,并调用 setResult () 方法暂存返回结果。

@Override
protected void onActive() {
    ...
    Intent resultIntent = new Intent();
    setResult(0, resultIntent);   //0为当前Ability销毁后返回的resultCode。
    ...
}

审核编辑 黄宇


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • HarmonyOS
    +关注

    关注

    79

    文章

    1967

    浏览量

    30003
收藏 人收藏

    评论

    相关推荐

    HarmonyOS NEXT应用元服务开发Intents Kit(意图框架服务)习惯推荐方案概述

    一、习惯推荐是HarmonyOS学习用户的行为习惯后做出的主动预测推荐。 1.开发者将用户在应用/元服务内的使用行为向HarmonyOS共享,使得H
    发表于 11-19 17:59

    北京迅为RK3568开发板嵌入式学习Linux驱动全新更新-CAN+

    北京迅为RK3568开发板嵌入式学习Linux驱动全新更新-CAN+
    的头像 发表于 09-04 15:29 398次阅读
    北京迅为RK3568<b class='flag-5'>开发</b>板嵌入式<b class='flag-5'>学习</b><b class='flag-5'>之</b>Linux驱动全新更新-CAN+

    庆科信息获HarmonyOS高级应用开发能力认证!助力品牌快速打造鸿蒙原生应用

    近日,上海庆科信息技术有限公司荣获HarmonyOS应用开发者高级认证,公司在华为鸿蒙生态的开发能力得到进一步拓展,能够帮助客户快速开发基于Harm
    的头像 发表于 07-17 13:24 545次阅读
    庆科信息获<b class='flag-5'>HarmonyOS</b>高级应用<b class='flag-5'>开发</b>能力认证!助力品牌快速打造鸿蒙原生应用

    HarmonyOS开发案例:【转场动画】

    在本教程中,我们将会通过一个简单的样例,学习如何基于ArkTS的声明式开发范式开发转场动画。其中包含页面间转场、组件内转场以及共享元素转场。
    的头像 发表于 05-06 15:42 979次阅读
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>开发</b>案例:【转场动画】

    HarmonyOS开发案例:【首选项】

    基于HarmonyOS的首选项能力实现的一个简单示例。
    的头像 发表于 04-19 16:20 1198次阅读
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>开发</b>案例:【首选项】

    润开鸿获鸿蒙先锋授牌,荣膺华为HarmonyOS开发服务商

    3月27日,华为HDD行业沙龙在北京举办,本次活动由HarmonyOS产品专家带来了精彩的议题分享,涵盖HarmonyOS操作系统介绍、HarmonyOS应用特性分享、意图框架介绍、行业解决方案应用、
    的头像 发表于 03-29 10:33 651次阅读
    润开鸿获鸿蒙先锋授牌,荣膺华为<b class='flag-5'>HarmonyOS</b><b class='flag-5'>开发</b>服务商

    润开鸿荣膺华为HarmonyOS开发服务商

    近日,华为HDD行业沙龙在北京隆重举行。在这场盛会上,HarmonyOS产品专家发表了引人入胜的议题分享,内容广泛而深入,包括HarmonyOS操作系统的全面介绍、应用特性的独到解析、意图框架的细致阐述,以及行业解决方案的生动应用和开发
    的头像 发表于 03-29 09:47 657次阅读

    HarmonyOS开发技术全面分析

    的快速连接、能力互助、资源共享,匹配合适的设备、提供流畅的全场景体验。 ⚫ 对应用开发者而言, HarmonyOS 采用了多种分布式技术,使得应用程序的开发实现与不同终端设备的形态差异无关,降低了
    发表于 02-21 16:31

    HarmonyOS SDK 助力新浪新闻打造精致易用的新闻应用

    开发多端部署,打通全链新闻服务 为了支撑开发者高效开发多终端设备上的应用,HarmonyOS 提供了包括多端
    发表于 02-07 15:51

    华为宣布HarmonyOS NEXT鸿蒙星河版开发者预览面向开发者开放申请

    华为宣布HarmonyOS NEXT鸿蒙星河版开发者预览面向开发者开放申请,这意味着鸿蒙生态进入第二阶段,将加速千行百业的应用鸿蒙化。
    的头像 发表于 01-29 16:42 1359次阅读
    华为宣布<b class='flag-5'>HarmonyOS</b> NEXT鸿蒙星河版<b class='flag-5'>开发</b>者预览面向<b class='flag-5'>开发</b>者开放申请

    淘宝与华为合作将基于HarmonyOS NEXT启动鸿蒙原生应用开发

    1月25日,淘宝与华为举办鸿蒙合作签约仪式,宣布将基于HarmonyOS NEXT启动鸿蒙原生应用开发
    的头像 发表于 01-26 16:14 1046次阅读

    免费学习鸿蒙(HarmonyOS开发,一些地址分享

    国内一流高校。通过鸿蒙班的设立,高校可以为学生提供专业的鸿蒙OS学习环境和丰富的实践机会,培养出更多的鸿蒙开发人才,为鸿蒙OS系统的生态建设做出贡献。 其中南京大学已经将HarmonyOS作为《移动
    发表于 01-12 20:48

    开发者说】HarmonyOS实践应用状态变量共享

    # 开发者说 # 【开发者说】栏目是为HarmonyOS开发者提供的展示和分享平台,在这里,大家可以发表自己的技术洞察和见解,也可以展示自己的开发
    的头像 发表于 12-26 21:20 755次阅读
    【<b class='flag-5'>开发</b>者说】<b class='flag-5'>HarmonyOS</b>实践<b class='flag-5'>之</b>应用状态变量共享

    开发者说】开发案例:使用canvas实现图表系列折线图

    】,即可获得投稿渠道。期待你们的分享~ 由于对HarmonyOS的兴趣与开发需求,我已经打卡学习ArkTS语言28天了。在模拟开发历史项目的时候,会经常需要使用到图表这类样式展示,我决
    的头像 发表于 12-13 16:05 582次阅读
    【<b class='flag-5'>开发</b>者说】<b class='flag-5'>开发</b>案例:使用canvas实现图表系列<b class='flag-5'>之</b>折线图

    鸿蒙原生应用/元服务开发-AGC分发如何上架HarmonyOS应用

    一、上架整体流程 二、上架HarmonyOS应用 获取到HarmonyOS应用软件包后,开发者可将应用提交至AGC申请上架。上架成功后,用户即可在华为应用市场搜索获取开发者的
    发表于 11-24 14:44