【Harmony OS】【ARK UI】ets使用startAbility或startAbilityForResult方式调起Ability
今天学习一下怎么实现启动一个Ability文档讲解,主要分为“参考资料”“api讲解”,“运行效果”三个部分讲解,
1.参考资料
参考资料启动一个Ability
2.Api讲解
startAbility
参数
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
parameter | StartAbilityParameter | 是 | 启动参数。 |
返回值
类型 | 说明 |
---|---|
Promise | Promise形式返回启动结果。错误码参考 StartAbilityCode |
示例
featureAbility.startAbilityForResult
startAbilityForResult(parameter: StartAbilityParameter, callback: AsyncCallback): void
以异步方法启动Ability并在结束的时候返回执行结果,使用callback形式返回结果。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
parameter | StartAbilityParameter | 是 | 启动参数。 |
callback | AsyncCallback | 是 | callback形式返回结果 |
示例
补充说明
StartAbilityParameter
启动Ability所需参数。
名称 | 参数类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
want | Want | 是 | 是 | 启动Ability的want信息。 |
abilityStartSetting | {[key: string]: any} | 是 | 是 | 表示能力的特殊属性,当开发者启动能力时,该属性可以作为调用中的输入参数传递。 |
taskSyncAnimationOptions | TaskSyncAnimationOptions | 是 | 是 | 启动Ability时需要进行动画控制的特殊属性,当开发者希望控制启动Ability的动画时,请传入该参数,需要权限ohos.permission.CONTROL_TASK_SYNC_ANIMATOR。 |
Want
启动信息。
名称 | 参数类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
deviceId | string | 是 | 是 | 表示运行指定Ability的设备ID。 |
bundleName | string | 是 | 是 | 表示包描述。如果在Want中同时指定了BundleName和AbilityName,则Want可以直接匹配到指定的Ability。 |
abilityName | string | 是 | 是 | 表示待启动的Ability名称。如果在Want中同时指定了BundleName和AbilityName,则Want可以直接匹配到指定的Ability。 |
uri | string | 是 | 是 | 表示Uri描述。如果在Want中指定了Uri,则Want将匹配指定的Uri信息,包括scheme, schemeSpecificPart, authority和path信息。 |
type | string | 是 | 是 | 表示MIME type类型描述,比如:“text/plain” 、 "image/*"等。 |
action | string | 是 | 是 | 表示action选项描述。具体参考:Action使用时通过wantConstant.Action获取,示例:wantConstant.Action.ACTION_HOME。 |
entities | Array | 是 | 是 | 表示entities相关描述。具体参考:Entity使用时通过wantConstant.Entity获取,示例:wantConstant.Entity.ENTITY_DEFAULT。 |
flags | number | 是 | 是 | 表示处理Want的方式。默认传数字,具体参考:Flags使用时通过wantConstant.Flags获取,示例:wantConstant.Flags.FLAG_INSTALL_ON_DEMAND。 |
parameters | {[key: string]: any} | 是 | 是 | 表示WantParams描述。 |
3.运行效果
3.1准备阶段
在新建OnceAbility和TwoAbility两个Ability界面,如下图示所示,包名为“com.harmony.alliance.myapplication”
config.json文件
2.在Index.ets写两个按钮“startAbility启动OnceAbility并传参”和“startAbilityForResult跳转TwoAbility”,代码如下
效果如图所示
3.2实现“startAbility启动OnceAbility并传参”
ets 实现点击按钮功能,代码如下
bundleName:就是config.json的bundleName,
abilityName就是ability的名称,
parameters:作为传递的参数
在OnceAbilitySlice使用如下代码进行接收
OnceAbilitySlice的xml文件
效果如下
onceAbilitySlice代码如下
3.3实现“startAbility启动OnceAbility并传参”
ets实现“startAbilityForResult跳转TwoAbility”ets代码如下
twoAbilitySlice的xml代码如下
效果图如下
TwoabilitySlice的代码如下
ets全部代码如下
运行效果如下