Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
37259b9b
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看板
未验证
提交
37259b9b
编写于
1月 29, 2023
作者:
O
openharmony_ci
提交者:
Gitee
1月 29, 2023
浏览文件
操作
浏览文件
下载
差异文件
!13929 优化“向用户申请授权”章节Stage模型示例代码;UIAbility组件间跳转中,停止UIAbility增加一个停止自身后并且移除任务的说明,以及停止自身的相关方法增加超链接。
Merge pull request !13929 from zyjhandsome/master
上级
dc20c03b
126a3635
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
18 addition
and
16 deletion
+18
-16
zh-cn/application-dev/application-models/uiability-intra-device-interaction.md
.../application-models/uiability-intra-device-interaction.md
+12
-8
zh-cn/application-dev/security/accesstoken-guidelines.md
zh-cn/application-dev/security/accesstoken-guidelines.md
+6
-8
未找到文件。
zh-cn/application-dev/application-models/uiability-intra-device-interaction.md
浏览文件 @
37259b9b
...
...
@@ -62,7 +62,7 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳
}
```
3.
在FuncAbility业务完成之后,如需要停止当前UIAbility实例,在FuncAbility中通过调用
terminateSelf(
)方法实现。
3.
在FuncAbility业务完成之后,如需要停止当前UIAbility实例,在FuncAbility中通过调用
[
terminateSelf()
](
../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateself
)
方法实现。
```
ts
// context为需要停止的UIAbility实例的AbilityContext
...
...
@@ -70,13 +70,17 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳
// ...
});
```
> **说明:**
>
> 调用[terminateSelf()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateself)方法停止当前UIAbility实例时,默认会保留该实例的快照(Snapshot),即在最近任务列表中仍然能查看到该实例对应的任务。如不需要保留该实例的快照,可以在其对应UIAbility的[module.json5配置文件](../quick-start/module-configuration-file.md)中,将[abilities标签](../quick-start/module-configuration-file.md#abilities标签)的removeMissionAfterTerminate字段配置为true。
## 启动应用内的UIAbility并获取返回结果
在一个EntryAbility启动另外一个FuncAbility时,希望在被启动的FuncAbility完成相关业务后,能将结果返回给调用方。例如在应用中将入口功能和帐号登录功能分别设计为两个独立的UIAbility,在帐号登录UIAbility中完成登录操作后,需要将登录的结果返回给入口UIAbility。
1.
在EntryAbility中,调用
startAbilityForResult(
)接口启动FuncAbility,异步回调中的data用于接收FuncAbility停止自身后返回给EntryAbility的信息。示例中的context的获取方式参见
[
获取UIAbility的Context属性
](
uiability-usage.md#获取uiability的上下文信息
)
。
1.
在EntryAbility中,调用
[
startAbilityForResult()
](
../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult
)
接口启动FuncAbility,异步回调中的data用于接收FuncAbility停止自身后返回给EntryAbility的信息。示例中的context的获取方式参见
[
获取UIAbility的Context属性
](
uiability-usage.md#获取uiability的上下文信息
)
。
```
ts
let
wantInfo
=
{
...
...
@@ -117,7 +121,7 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳
});
```
3.
FuncAbility停止自身后,EntryAbility通过
startAbilityForResult(
)方法回调接收被FuncAbility返回的信息,RESULT_CODE需要与前面的数值保持一致。
3.
FuncAbility停止自身后,EntryAbility通过
[
startAbilityForResult()
](
../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult
)
方法回调接收被FuncAbility返回的信息,RESULT_CODE需要与前面的数值保持一致。
```
ts
const
RESULT_CODE
:
number
=
1001
;
...
...
@@ -149,7 +153,7 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳
本章节主要讲解如何通过隐式Want启动其他应用的UIAbility。
1.
将多个待匹配的文档应用安装到设备,在其对应UIAbility的
module.json5配置文件
中,配置skills的
[
entities
](
../reference/apis/js-apis-ability-wantConstant.md#wantconstantentity
)
字段和
[
actions
](
../reference/apis/js-apis-ability-wantConstant.md#wantconstantaction
)
字段。
1.
将多个待匹配的文档应用安装到设备,在其对应UIAbility的
[
module.json5配置文件
](
../quick-start/module-configuration-file.md
)
中,配置skills的
[
entities
](
../reference/apis/js-apis-ability-wantConstant.md#wantconstantentity
)
字段和
[
actions
](
../reference/apis/js-apis-ability-wantConstant.md#wantconstantaction
)
字段。
```
json
{
...
...
@@ -198,7 +202,7 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳
效果示意如下图所示,点击“打开PDF文档”时,会弹出选择框供用户选择。
<img
src=
"figures/uiability-intra-device-interaction.png"
alt=
"uiability-intra-device-interaction"
style=
"zoom:50%;"
/>
3.
在文档应用使用完成之后,如需要停止当前UIAbility实例,通过调用
terminateSelf(
)方法实现。
3.
在文档应用使用完成之后,如需要停止当前UIAbility实例,通过调用
[
terminateSelf()
](
../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateself
)
方法实现。
```
ts
// context为需要停止的UIAbility实例的AbilityContext
...
...
@@ -210,7 +214,7 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳
## 启动其他应用的UIAbility并获取返回结果
当使用隐式Want启动其他应用的UIAbility并希望获取返回结果时,调用方需要使用
startAbilityForResult(
)方法启动目标UIAbility。例如主应用中需要启动三方支付并获取支付结果。
当使用隐式Want启动其他应用的UIAbility并希望获取返回结果时,调用方需要使用
[
startAbilityForResult()
](
../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult
)
方法启动目标UIAbility。例如主应用中需要启动三方支付并获取支付结果。
1.
在支付应用对应UIAbility的module.json5配置文件中,配置skills的
[
entities
](
../reference/apis/js-apis-ability-wantConstant.md#wantconstantentity
)
字段和
[
actions
](
../reference/apis/js-apis-ability-wantConstant.md#wantconstantaction
)
字段。
...
...
@@ -238,7 +242,7 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳
}
```
2.
调用方使用
startAbilityForResult(
)方法启动支付应用的UIAbility,在调用方want参数中的entities和action需要被包含在待匹配UIAbility的skills配置的entities和actions中。异步回调中的data用于后续接收支付UIAbility停止自身后返回给调用方的信息。系统匹配到符合entities和actions参数条件的UIAbility后,会弹出选择框展示匹配到的UIAbility实例列表供用户选择使用。
2.
调用方使用
[
startAbilityForResult()
](
../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult
)
方法启动支付应用的UIAbility,在调用方want参数中的entities和action需要被包含在待匹配UIAbility的skills配置的entities和actions中。异步回调中的data用于后续接收支付UIAbility停止自身后返回给调用方的信息。系统匹配到符合entities和actions参数条件的UIAbility后,会弹出选择框展示匹配到的UIAbility实例列表供用户选择使用。
```
ts
let
wantInfo
=
{
...
...
@@ -279,7 +283,7 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳
});
```
4.
在调用方
startAbilityForResult(
)方法回调中接收支付应用返回的信息,RESULT_CODE需要与前面terminateSelfWithResult()返回的数值保持一致。
4.
在调用方
[
startAbilityForResult()
](
../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateselfwithresult
)
方法回调中接收支付应用返回的信息,RESULT_CODE需要与前面terminateSelfWithResult()返回的数值保持一致。
```
ts
const
RESULT_CODE
:
number
=
1001
;
...
...
zh-cn/application-dev/security/accesstoken-guidelines.md
浏览文件 @
37259b9b
...
...
@@ -134,8 +134,7 @@
```
typescript
import
UIAbility
from
'
@ohos.app.ability.UIAbility
'
;
import
window
from
'
@ohos.window
'
;
import
abilityAccessCtrl
from
'
@ohos.abilityAccessCtrl
'
;
import
{
Permissions
}
from
'
@ohos.abilityAccessCtrl
'
;
import
abilityAccessCtrl
,
{
Permissions
}
from
'
@ohos.abilityAccessCtrl
'
;
export
default
class
EntryAbility
extends
UIAbility
{
// ...
...
...
@@ -143,10 +142,10 @@
onWindowStageCreate
(
windowStage
:
window
.
WindowStage
)
{
// Main window is created, set main page for this ability
let
context
=
this
.
context
;
let
A
tManager
=
abilityAccessCtrl
.
createAtManager
();
let
a
tManager
=
abilityAccessCtrl
.
createAtManager
();
// requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗
const
permissions
:
Array
<
Permissions
>
=
[
'
ohos.permission.READ_CALENDAR
'
];
A
tManager
.
requestPermissionsFromUser
(
context
,
permissions
).
then
((
data
)
=>
{
a
tManager
.
requestPermissionsFromUser
(
context
,
permissions
).
then
((
data
)
=>
{
console
.
info
(
`[requestPermissions] data:
${
JSON
.
stringify
(
data
)}
`
);
let
grantStatus
:
Array
<
number
>
=
data
.
authResults
;
if
(
grantStatus
[
0
]
===
-
1
)
{
...
...
@@ -165,8 +164,7 @@
在UI界面中向用户申请授权。
```
typescript
import
abilityAccessCtrl
from
'
@ohos.abilityAccessCtrl
'
;
import
{
Permissions
}
from
'
@ohos.abilityAccessCtrl
'
;
import
abilityAccessCtrl
,
{
Permissions
}
from
'
@ohos.abilityAccessCtrl
'
;
import
common
from
'
@ohos.app.ability.common
'
;
@
Entry
...
...
@@ -174,10 +172,10 @@
struct
Index
{
reqPermissions
()
{
let
context
=
getContext
(
this
)
as
common
.
UIAbilityContext
;
let
A
tManager
=
abilityAccessCtrl
.
createAtManager
();
let
a
tManager
=
abilityAccessCtrl
.
createAtManager
();
// requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗
const
permissions
:
Array
<
Permissions
>
=
[
'
ohos.permission.READ_CALENDAR
'
];
A
tManager
.
requestPermissionsFromUser
(
context
,
permissions
).
then
((
data
)
=>
{
a
tManager
.
requestPermissionsFromUser
(
context
,
permissions
).
then
((
data
)
=>
{
console
.
info
(
`[requestPermissions] data:
${
JSON
.
stringify
(
data
)}
`
);
let
grantStatus
:
Array
<
number
>
=
data
.
authResults
;
if
(
grantStatus
[
0
]
===
-
1
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录