
HarmonyOS Sample 之 Intent 信息传递 原创 精华
目录
Intent 信息传递
介绍
Intent 是对象之间传递信息的载体。例如,当一个 Ability 需要启动另一个 Ability 时,或者一个 AbilitySlice 需要导航到另一个 AbilitySlice 时,可以通过 Intent 指定启动的目标同时携带相关数据。
启动应用有两种方式:根据 Ability 的全称启动应用,根据 Operation 的其他属性启动应用。
本示例结合第三方登录的场景演示了如何根据Ability的全称启动应用和根据Operation的其他属性启动应用。
模拟的第三方登录的场景只是为了实践Intent 信息传递的功能,真实原理不一定是这样。
搭建环境
安装DevEco Studio,详情请参考DevEco Studio下载。
设置DevEco Studio开发环境,DevEco Studio开发环境需要依赖于网络环境,需要连接上网络才能确保工具的正常使用,可以根据如下两种情况来配置开发环境:
如果可以直接访问Internet,只需进行下载HarmonyOS SDK操作。
如果网络不能直接访问Internet,需要通过代理服务器才可以访问,请参考配置开发环境。
项目结构
该实例一共有3个应用,intent、secondapp、thirdapp
演示的效果是模拟第三方授权登录场景,使用Action和Ability的全称两种不同方式启动应用,实现不同应用之间的数据传递。
实现步骤
1.编写界面
intent的main_ability_slice.xml界面
secondapp的main_ability_slice.xml界面
thirdapp的main_ability_slice.xml界面
2.编写启动应用代码
intent应用的MainAbility.java
secondapp应用的MainAbility.java
secondapp应用的config.json,声明"action.custom.wechat" Action
thirdapp应用的ThirdApplyAbility.java
thirdapp应用的config.json,在ThirdApplyAbility的skills中声明"action.custom.weibo" Action
问题总结
1.如果在Ability中要使用Slice的组件,需要设置UIContent,否则会找不到组件
2.使用Actin方式,需要在config.json 对应的Ability中声明路由
是否需要在对应Ability的onStart方法中addActionRoute添加设置,要看路由指向的是不是Ability默认的Slice
3.使用Action方式,需要在Operation中指定Action,使用Ability的全称方式需要在Operation中指定AbilityName+bundleName
效果展示
完整代码
附件直接下载
