Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
02438b08
D
Docs
项目概览
OpenHarmony
/
Docs
大约 2 年 前同步成功
通知
161
Star
293
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
02438b08
编写于
2月 20, 2023
作者:
zyjhandsome
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化Want API的示例代码内容。
Signed-off-by:
zyjhandsome
<
zyjhandsome@126.com
>
上级
efc01321
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
81 addition
and
63 deletion
+81
-63
zh-cn/application-dev/reference/apis/js-apis-app-ability-want.md
...pplication-dev/reference/apis/js-apis-app-ability-want.md
+81
-63
未找到文件。
zh-cn/application-dev/reference/apis/js-apis-app-ability-want.md
浏览文件 @
02438b08
# @ohos.app.ability.Want (Want)
Want是对象间信息传递的载体
, 可以用于应用组件间的信息传递。 Want的使用场景之一是作为startAbility的参数, 其包含了指定的启动目标, 以及启动时需携带的相关数据, 如bundleName和abilityName字段分别指明目标Ability所在应用的包名以及对应包内的Ability名称。当UIAbilityA需要启动UIAbilityB并传入一些数据时,
可使用Want作为载体将这些数据传递给UIAbilityB。
Want是对象间信息传递的载体
,可以用于应用组件间的信息传递。Want的使用场景之一是作为startAbility的参数,其包含了指定的启动目标,以及启动时需携带的相关数据,例如bundleName和abilityName字段分别指明目标Ability所在应用的包名以及对应包内的Ability名称。当UIAbilityA需要启动UIAbilityB并传入一些数据时,
可使用Want作为载体将这些数据传递给UIAbilityB。
> **说明:**
>
...
...
@@ -31,107 +31,125 @@ import Want from '@ohos.app.ability.Want';
**示例:**
-
基础用法
(在UIAbility对象中调用,其中示例中的context为UIAbility的上下文对象)
。
-
基础用法
:在UIAbility对象中调用,示例中的context的获取方式请参见
[
获取UIAbility的上下文信息
](
../../application-models/uiability-usage.md#获取uiability的上下文信息
)
。
```
ts
let
want
=
{
'
deviceId
'
:
''
,
// deviceId为空表示本设备
'
bundleName
'
:
'
com.example.myapplication
'
,
'
abilityName
'
:
'
FuncAbility
'
,
'
moduleName
'
:
'
entry
'
// moduleName非必选
};
this
.
context
.
startAbility
(
want
,
(
error
)
=>
{
// 显式拉起Ability,通过bundleName、abilityName和moduleName可以唯一确定一个Ability
console
.
log
(
'
error.code =
'
+
error
.
code
);
});
let
want
=
{
'
deviceId
'
:
''
,
// deviceId为空表示本设备
'
bundleName
'
:
'
com.example.myapplication
'
,
'
abilityName
'
:
'
FuncAbility
'
,
'
moduleName
'
:
'
entry
'
// moduleName非必选
};
this
.
context
.
startAbility
(
want
,
(
err
)
=>
{
// 显式拉起Ability,通过bundleName、abilityName和moduleName可以唯一确定一个Ability
console
.
error
(
`startAbility failed, code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
});
```
-
通过自定字段传递数据
, 以下为当前支持类型(在UIAbility对象中调用,其中示例中的context为UIAbility的上下文对象
)。
-
通过自定字段传递数据
,以下为当前支持类型(在UIAbility对象中调用,示例中的context的获取方式请参见
[
获取UIAbility的上下文信息
](
../../application-models/uiability-usage.md#获取uiability的上下文信息
)
)。
* 字符串(String)
```ts
let want = {
bundleName: 'com.example.myapplication',
abilityName: 'FuncAbility',
parameters: {
keyForString: 'str',
},
bundleName: 'com.example.myapplication',
abilityName: 'FuncAbility',
parameters: {
keyForString: 'str',
},
};
this.context.startAbility(want, (err) => {
console.error(`startAbility failed, code is ${err.code}, message is ${err.message}`);
});
```
* 数字(Number)
```ts
let want = {
bundleName: 'com.example.myapplication',
abilityName: 'FuncAbility',
parameters: {
keyForInt: 100,
keyForDouble: 99.99,
},
bundleName: 'com.example.myapplication',
abilityName: 'FuncAbility',
parameters: {
keyForInt: 100,
keyForDouble: 99.99,
},
};
this.context.startAbility(want, (err) => {
console.error(`startAbility failed, code is ${err.code}, message is ${err.message}`);
});
```
* 布尔(Boolean)
```ts
let want = {
bundleName: 'com.example.myapplication',
abilityName: 'FuncAbility',
parameters: {
keyForBool: true,
},
bundleName: 'com.example.myapplication',
abilityName: 'FuncAbility',
parameters: {
keyForBool: true,
},
};
this.context.startAbility(want, (err) => {
console.error(`startAbility failed, code is ${err.code}, message is ${err.message}`);
});
```
* 对象(Object)
```ts
let want = {
bundleName: 'com.example.myapplication',
abilityName: 'FuncAbility',
parameters: {
keyForObject: {
keyForObjectString: 'str',
keyForObjectInt: -200,
keyForObjectDouble: 35.5,
keyForObjectBool: false,
},
bundleName: 'com.example.myapplication',
abilityName: 'FuncAbility',
parameters: {
keyForObject: {
keyForObjectString: 'str',
keyForObjectInt: -200,
keyForObjectDouble: 35.5,
keyForObjectBool: false,
},
},
};
this.context.startAbility(want, (err) => {
console.error(`startAbility failed, code is ${err.code}, message is ${err.message}`);
});
```
* 数组(Array)
```ts
let want = {
bundleName: 'com.example.myapplication',
abilityName: 'FuncAbility',
parameters: {
keyForArrayString: ['str1', 'str2', 'str3'],
keyForArrayInt: [100, 200, 300, 400],
keyForArrayDouble: [0.1, 0.2],
keyForArrayObject: [{obj1: 'aaa'}, {obj2: 100
}],
},
bundleName: 'com.example.myapplication',
abilityName: 'FuncAbility',
parameters: {
keyForArrayString: ['str1', 'str2', 'str3'],
keyForArrayInt: [100, 200, 300, 400],
keyForArrayDouble: [0.1, 0.2],
keyForArrayObject: [{ obj1: 'aaa' }, { obj2: 100
}],
},
};
this.context.startAbility(want, (err) => {
console.error(`startAbility failed, code is ${err.code}, message is ${err.message}`);
});
```
* 文件描述符(FD)
```ts
import fileio from '@ohos.fileio';
let fd;
try {
fd = fileio.openSync('/data/storage/el2/base/haps/pic.png');
} catch(e) {
console.log('openSync fail:' + JSON.stringify(e));
fd = fileio.openSync('/data/storage/el2/base/haps/pic.png');
} catch
(e) {
console.log('openSync fail:' + JSON.stringify(e));
}
let want = {
'deviceId': '', // deviceId为空表示本设备
'bundleName': 'com.example.myapplication',
'abilityName': 'FuncAbility',
'moduleName': 'entry', // moduleName非必选
'parameters': {
'keyFd':{'type':'FD', 'value':fd
} // {'type':'FD', 'value':fd}是固定用法,用于表示该数据是FD
}
'deviceId': '', // deviceId为空表示本设备
'bundleName': 'com.example.myapplication',
'abilityName': 'FuncAbility',
'moduleName': 'entry', // moduleName非必选
'parameters': {
'keyFd': { 'type': 'FD', 'value': fd
} // {'type':'FD', 'value':fd}是固定用法,用于表示该数据是FD
}
};
this.context.startAbility(want, (error) => {
// 显式拉起Ability,通过bundleName、abilityName和moduleName可以唯一确定一个Ability
console.log('error.code = ' + error.code)
this.context.startAbility(want, (err) => {
console.error(`startAbility failed, code is ${err.code}, message is ${err.message}`);
});
```
-
更多详细说明和示例请参见:
[
应用模型
](
../../application-models/Readme-CN.md
)
的信息传递载体Want
<!--no_check-->
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录