未验证 提交 38673968 编写于 作者: O openharmony_ci 提交者: Gitee

!13047 优化《访问控制授权申请》章节部分描述内容

Merge pull request !13047 from zyjhandsome/master
......@@ -176,7 +176,7 @@ export default class EntryAbility extends UIAbility {
> **说明:**
> 当获取的是其他应用的Context时:
>
> - 申请`ohos.permission.GET_BUNDLE_INFO_PRIVILEGED`权限,配置方式请参阅[访问控制授权申请指导](../security/accesstoken-guidelines.md#stage模型)。
> - 申请`ohos.permission.GET_BUNDLE_INFO_PRIVILEGED`权限,配置方式请参见[访问控制授权申请](../security/accesstoken-guidelines.md#配置文件权限声明)。
>
> - 接口为系统接口,三方应用不支持调用。
......@@ -199,7 +199,7 @@ export default class EntryAbility extends UIAbility {
> **说明:**
> 当获取的是其他应用的指定Module的Context时:
>
> - 申请`ohos.permission.GET_BUNDLE_INFO_PRIVILEGED`权限,配置方式请参阅[访问控制授权申请指导](../security/accesstoken-guidelines.md#stage模型)。
> - 申请`ohos.permission.GET_BUNDLE_INFO_PRIVILEGED`权限,配置方式请参见[访问控制授权申请](../security/accesstoken-guidelines.md#配置文件权限声明)。
>
> - 接口为系统接口,三方应用不支持调用。
......@@ -303,7 +303,7 @@ export default class EntryAbility extends UIAbility {
每个Ability中都包含了一个Context属性。Ability功能主要是处理生命周期,其余操作Ability的方法(例如startAbility()、connectServiceExtensionAbility()、terminateSelf()等)都是在对应的Context中实现的,同时Context也提供了获取Ability的配置信息、向用户申请授权等能力,如何获取Context请参见[获取UIAbility的上下文信息](uiability-usage.md#获取uiability的上下文信息)
应用需要获取用户的隐私信息或使用系统能力时,例如获取位置信息、访问日历、使用相机拍摄照片或录制视频等,需要向用户申请授权,示意效果如下图所示。具体使用请参见[访问控制授权申请指导](../security/accesstoken-guidelines.md)
应用需要获取用户的隐私信息或使用系统能力时,例如获取位置信息、访问日历、使用相机拍摄照片或录制视频等,需要向用户申请授权,示意效果如下图所示。具体使用请参见[访问控制授权申请](../security/accesstoken-guidelines.md)
**图2** 向用户申请日历访问授权
<img src="figures/application-context-stage.png" alt="application-context-stage" style="zoom:50%;" />
\ No newline at end of file
......@@ -19,7 +19,7 @@ OpenHarmony通过CES(Common Event Service,公共事件服务)为应用程
- 有序公共事件:CES转发公共事件时,按订阅者订阅先后顺序,在接收到前一个订阅者回复后,再转发下一个订阅者。
- 粘性公共事件:能够让订阅者收到在订阅前已经发送的公共事件就是粘性公共事件。普通的公共事件只能在订阅后发送才能收到,而粘性公共事件的特殊性就是可以先发送后订阅。发送粘性事件必须是系统应用或系统服务,且需要申请`ohos.permission.COMMONEVENT_STICKY`权限,配置方式请参[访问控制授权申请指导](../security/accesstoken-guidelines.md#stage模型)
- 粘性公共事件:能够让订阅者收到在订阅前已经发送的公共事件就是粘性公共事件。普通的公共事件只能在订阅后发送才能收到,而粘性公共事件的特殊性就是可以先发送后订阅。发送粘性事件必须是系统应用或系统服务,且需要申请`ohos.permission.COMMONEVENT_STICKY`权限,配置方式请参[访问控制授权申请](../security/accesstoken-guidelines.md#配置文件权限声明)
每个应用都可以按需订阅公共事件,订阅成功,当公共事件发布时,系统会将其发送给对应的应用。这些公共事件可能来自系统、其他应用和应用自身。
......
......@@ -47,7 +47,7 @@
### 开发步骤
1. 申请`ohos.permission.DISTRIBUTED_DATASYNC`权限,配置方式请参[访问控制授权申请指导](../security/accesstoken-guidelines.md#stage模型)
1. 申请`ohos.permission.DISTRIBUTED_DATASYNC`权限,配置方式请参[访问控制授权申请](../security/accesstoken-guidelines.md#配置文件权限声明)
2. 申请数据同步权限,弹框示例代码。
......@@ -129,7 +129,7 @@
### 开发步骤
1. 申请`ohos.permission.DISTRIBUTED_DATASYNC`权限,配置方式请参[访问控制授权申请指导](../security/accesstoken-guidelines.md#stage模型)
1. 申请`ohos.permission.DISTRIBUTED_DATASYNC`权限,配置方式请参[访问控制授权申请](../security/accesstoken-guidelines.md#配置文件权限声明)
2. 申请数据同步权限,弹框示例代码。
......@@ -187,7 +187,7 @@
// ...
// context为调用方UIAbility的AbilityContext
// context为调用方UIAbility的UIAbilityContext
this.context.startAbilityForResult(want).then((data) => {
if (data?.resultCode === RESULT_CODE) {
// 解析目标端UIAbility返回的信息
......@@ -218,7 +218,7 @@
### 开发步骤
1. 申请`ohos.permission.DISTRIBUTED_DATASYNC`权限,配置方式请参[访问控制授权申请指导](../security/accesstoken-guidelines.md#stage模型)
1. 申请`ohos.permission.DISTRIBUTED_DATASYNC`权限,配置方式请参[访问控制授权申请](../security/accesstoken-guidelines.md#配置文件权限声明)
2. 申请数据同步权限,弹框示例代码。
......@@ -327,7 +327,7 @@
### 开发步骤
1. 申请`ohos.permission.DISTRIBUTED_DATASYNC`权限,配置方式请参[访问控制授权申请指导](../security/accesstoken-guidelines.md#stage模型)
1. 申请`ohos.permission.DISTRIBUTED_DATASYNC`权限,配置方式请参[访问控制授权申请](../security/accesstoken-guidelines.md#配置文件权限声明)
2. 申请数据同步权限,弹框示例代码。
......
......@@ -31,7 +31,7 @@
一个UIAbility实例对应一个单独的任务,因此应用调用startAbility()方法启动一个UIAbility时,就是创建了一个任务。
桌面应用调用[missionManager](../reference/apis/js-apis-application-missionManager.md)的接口管理任务,需要申请`ohos.permission.MANAGE_MISSIONS`权限,配置方式请参[访问控制授权申请指导](../security/accesstoken-guidelines.md#stage模型)
桌面应用调用[missionManager](../reference/apis/js-apis-application-missionManager.md)的接口管理任务,需要申请`ohos.permission.MANAGE_MISSIONS`权限,配置方式请参[访问控制授权申请](../security/accesstoken-guidelines.md#配置文件权限声明)
利用missionManager进行任务管理(监听任务变化、获取任务信息、获取任务快照、清理任务、任务加锁/解锁等),示例代码如下:
......
......@@ -10,7 +10,7 @@
在config.json声明需要的权限,在module下添加"reqPermissions",并写入对应权限。
如申请访问日历权限,需要申请`ohos.permission.READ_CALENDAR`权限,配置方式请参[访问控制授权申请指导](../security/accesstoken-guidelines.md#stage模型)
如申请访问日历权限,需要申请`ohos.permission.READ_CALENDAR`权限,配置方式请参[访问控制授权申请](../security/accesstoken-guidelines.md#配置文件权限声明)
对应config.json文件的示例代码如下所示:
......
# UIAbility组件与UI的数据同步
基于OpenHarmony的应用模型,可以通过以下种方式来实现UIAbility组件与UI之间的数据同步。
基于OpenHarmony的应用模型,可以通过以下种方式来实现UIAbility组件与UI之间的数据同步。
- EventHub:[基类Context](application-context-stage.md)提供了EventHub的能力,通过发布订阅方式来实现。事件需要先订阅后发布,订阅者收到消息后进行处理。
1. EventHub:基于发布订阅模式来实现,事件需要先订阅后发布,订阅者收到消息后进行处理。
2. globalThis:ArkTS引擎实例内部的一个全局对象,在ArkTS引擎实例内部都能访问。
- globalThis:ArkTS引擎实例内部的一个全局对象,在ArkTS引擎实例内部都能访问。
- LocalStorage/AppStorage:参见[页面级变量的状态管理](../quick-start/arkts-state-mgmt-application-level.md)
## 使用EventHub进行数据通信
EventHub提供了UIAbility组件/ExtensionAbility组件级别的事件机制,以UIAbility组件/ExtensionAbility组件为中心提供了订阅、取消订阅和触发事件的数据通信能力。接口说明请参见[EventHub](../reference/apis/js-apis-inner-application-eventHub.md)
[EventHub](../reference/apis/js-apis-inner-application-eventHub.md)提供了UIAbility组件/ExtensionAbility组件级别的事件机制,以UIAbility组件/ExtensionAbility组件为中心提供了订阅、取消订阅和触发事件的数据通信能力
在使用EventHub之前,首先需要获取EventHub对象。[基类Context](application-context-stage.md)提供了EventHub对象,本章节以使用EventHub实现UIAbility与UI之间的数据通信为例进行说明。
[基类Context](application-context-stage.md)提供了EventHub对象,在使用EventHub之前,首先需要获取EventHub对象。本章节以使用EventHub实现UIAbility与UI之间的数据通信为例进行说明。
1. 在UIAbility中调用eventHub.on()方法注册一个自定义事件“event1”,eventHub.on()有如下两种调用方式,使用其中一种即可。
1. 在UIAbility中调用[eventHub.on()](../reference/apis/js-apis-inner-application-eventHub.md#eventhubon)方法注册一个自定义事件“event1”,[eventHub.on()](../reference/apis/js-apis-inner-application-eventHub.md#eventhubon)有如下两种调用方式,使用其中一种即可。
```ts
import UIAbility from '@ohos.app.ability.UIAbility';
......@@ -41,7 +41,7 @@ EventHub提供了UIAbility组件/ExtensionAbility组件级别的事件机制,
}
```
2. 在UI界面中通过eventHub.emit()方法触发该事件,在触发事件的同时,根据需要传入参数信息。
2. 在UI界面中通过[eventHub.emit()](../reference/apis/js-apis-inner-application-eventHub.md#eventhubemit)方法触发该事件,在触发事件的同时,根据需要传入参数信息。
```ts
import common from '@ohos.app.ability.common';
......@@ -78,7 +78,7 @@ EventHub提供了UIAbility组件/ExtensionAbility组件级别的事件机制,
[2,'test']
```
4. 在自定义事件“event1”使用完成后,可以根据需要调用eventHub.off()方法取消该事件的订阅。
4. 在自定义事件“event1”使用完成后,可以根据需要调用[eventHub.off()](../reference/apis/js-apis-inner-application-eventHub.md#eventhuboff)方法取消该事件的订阅。
```ts
// context为UIAbility实例的AbilityContext
......
......@@ -38,7 +38,7 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳
info: '来自EntryAbility Index页面',
},
}
// context为调用方UIAbility的AbilityContext
// context为调用方UIAbility的UIAbilityContext
this.context.startAbility(wantInfo).then(() => {
// ...
}).catch((err) => {
......@@ -88,7 +88,7 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳
info: '来自EntryAbility Index页面',
},
}
// context为调用方UIAbility的AbilityContext
// context为调用方UIAbility的UIAbilityContext
this.context.startAbilityForResult(wantInfo).then((data) => {
// ...
}).catch((err) => {
......@@ -124,7 +124,7 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳
// ...
// context为调用方UIAbility的AbilityContext
// context为调用方UIAbility的UIAbilityContext
this.context.startAbilityForResult(want).then((data) => {
if (data?.resultCode === RESULT_CODE) {
// 解析被调用方UIAbility返回的信息
......@@ -187,7 +187,7 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳
entities: ['entity.system.default'],
}
// context为调用方UIAbility的AbilityContext
// context为调用方UIAbility的UIAbilityContext
this.context.startAbility(wantInfo).then(() => {
// ...
}).catch((err) => {
......@@ -250,7 +250,7 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳
entities: ['entity.system.default'],
}
// context为调用方UIAbility的AbilityContext
// context为调用方UIAbility的UIAbilityContext
this.context.startAbilityForResult(wantInfo).then((data) => {
// ...
}).catch((err) => {
......@@ -288,7 +288,7 @@ UIAbility是系统调度的最小单元。在设备内的功能模块之间跳
// Want参数信息
};
// context为调用方UIAbility的AbilityContext
// context为调用方UIAbility的UIAbilityContext
this.context.startAbilityForResult(want).then((data) => {
if (data?.resultCode === RESULT_CODE) {
// 解析被调用方UIAbility返回的信息
......@@ -321,7 +321,7 @@ let wantInfo = {
router: 'funcA',
},
}
// context为调用方UIAbility的AbilityContext
// context为调用方UIAbility的UIAbilityContext
this.context.startAbility(wantInfo).then(() => {
// ...
}).catch((err) => {
......
......@@ -114,7 +114,7 @@ specified启动模式为指定实例模式,针对一些特殊场景使用(
instanceKey: getInstance(),
},
}
// context为调用方UIAbility的AbilityContext
// context为调用方UIAbility的UIAbilityContext
this.context.startAbility(want).then(() => {
// ...
}).catch((err) => {
......
......@@ -110,7 +110,7 @@ cameraInput = await this.cameraManager.createCameraInput(cameraId)
let permissions: Array<string> = ['ohos.permission.READ_MEDIA','ohos.permission.WRITE_MEDIA']
let atManager = abilityAccessCtrl.createAtManager();
// context为调用方UIAbility的AbilityContext
// context为调用方UIAbility的UIAbilityContext
atManager.requestPermissionsFromUser(context, permissions).then((data) => {
console.log("Succeed to request permission from user with data: " + JSON.stringify(data))
}).catch((error) => {
......
......@@ -21,7 +21,7 @@ AudioCapturer提供了用于获取原始音频文件的方法。开发者可以
## 约束与限制
开发者在进行音频数据采集功能开发前,需要先对所开发的应用配置麦克风权限(ohos.permission.MICROPHONE),权限配置相关内容可参考:[访问控制授权申请指导](../security/accesstoken-guidelines.md)
开发者在进行音频数据采集功能开发前,需要先对所开发的应用配置麦克风权限(ohos.permission.MICROPHONE),配置方式请参见[访问控制授权申请](../security/accesstoken-guidelines.md#配置文件权限声明)
## 开发指导
......
......@@ -16,7 +16,7 @@ AudioVolumeManager提供了音量管理的方法。开发者可以通过本指
## 约束与限制
开发者在进行麦克风管理开发前,需要先对所开发的应用配置麦克风权限(ohos.permission.MICROPHONE),如果要设置麦克风状态,则需要配置音频管理配置权限(ohos.permission.MANAGE_AUDIO_CONFIG),需注意该权限为系统级别权限。权限配置相关内容可参考:[访问控制授权申请指导](../security/accesstoken-guidelines.md)
开发者在进行麦克风管理开发前,需要先对所开发的应用配置麦克风权限(ohos.permission.MICROPHONE),如果要设置麦克风状态,则需要配置音频管理配置权限(ohos.permission.MANAGE_AUDIO_CONFIG),需注意该权限为系统级别权限。配置方式请参见[访问控制授权申请](../security/accesstoken-guidelines.md#配置文件权限声明)
## 开发指导
......
......@@ -35,7 +35,7 @@
## 开发步骤
1. 申请`ohos.permission.NOTIFICATION_CONTROLLER`权限,配置方式请参[访问控制授权申请指导](../security/accesstoken-guidelines.md)
1. 申请`ohos.permission.NOTIFICATION_CONTROLLER`权限,配置方式请参[访问控制授权申请](../security/accesstoken-guidelines.md#配置文件权限声明)
2. 导入通知订阅模块。
......
......@@ -15,13 +15,15 @@
应用需要在工程配置文件中,对需要的权限逐个声明,未在配置文件中声明的权限,应用将无法获得授权。OpenHarmony提供了两种应用模型,分别为FA模型和Stage模型,更多信息可以参考[应用模型解读](../application-models/application-model-description.md)。不同的应用模型的应用包结构不同,所使用的配置文件不同。
> **说明**:应用默认的APL等级为`normal`,当应用需要申请`system_basic`和`system_core`等级时,除了在配置文件中进行权限声明之外,还需要通过[ACL方式](#acl方式声明)进行声明使用。
配置文件标签说明如下表所示。
| 标签 | 是否必填 | 说明 |
| --------- | -------- | ------------------------------------------------------------ |
| name | 是 | 权限名称。 |
| reason | 否 | 描述申请权限的原因。<br />> 说明:当申请的权限为user_grant权限时,此字段必填。 |
| usedScene | 否 | 描述权限使用的场景和时机。<br />> 说明:当申请的权限为user_grant权限时,此字段必填。 |
| reason | 否 | 描述申请权限的原因。<br />> **说明**:当申请的权限为user_grant权限时,此字段必填。 |
| usedScene | 否 | 描述权限使用的场景和时机。<br />> **说明**:当申请的权限为user_grant权限时,此字段必填。 |
| abilities | 否 | 标识需要使用到该权限的Ability,标签为数组形式。<br/>**适用模型**:Stage模型 |
| ability | 否 | 标识需要使用到该权限的Ability,标签为数组形式。<br/>**适用模型**:FA模型 |
| when | 否 | 标识权限使用的时机,值为`inuse/always`<br />- inuse:表示为仅允许前台使用。<br />- always:表示前后台都可使用。 |
......@@ -96,7 +98,7 @@
## ACL方式声明
应用在申请`system_basic`等级权限时,高于应用默认的`normal`等级。当应用需要申请权限项的等级高于应用默认的等级时,需要通过ACL方式进行声明使用。
应用在申请`system_basic``system_core`等级权限时,高于应用默认的`normal`等级。当应用需要申请权限项的等级高于应用默认的等级时,需要通过ACL方式进行声明使用。
例如应用在申请访问用户公共目录下音乐类型的文件,需要申请` ohos.permission.WRITE_AUDIO`权限,该权限为`system_basic`等级;以及应用在申请截取屏幕图像功能,该权限为`system_core`等级,需要申请` ohos.permission.CAPTURE_SCREEN`权限。此时需要将相关权限项配置到[HarmonyAppProvision配置文件](app-provision-structure.md)`acl`字段中。
......@@ -123,7 +125,7 @@
以允许应用读取日历信息为例进行说明。
1. 申请`ohos.permission.READ_CALENDAR`权限,配置方式请参见[访问控制授权申请](#stage模型)
1. 申请`ohos.permission.READ_CALENDAR`权限,配置方式请参见[访问控制授权申请](#配置文件权限声明)
2. 可以在UIAbility的onWindowStageCreate()回调中调用[requestPermissionsFromUser()](../reference/apis/js-apis-abilityAccessCtrl.md#requestpermissionsfromuser9)接口动态申请权限,也可以根据业务需要在UI界面中向用户申请授权。根据[requestPermissionsFromUser()](../reference/apis/js-apis-abilityAccessCtrl.md#requestpermissionsfromuser9)接口返回值判断是否已获取目标权限,如果当前已经获取权限,则可以继续正常访问目标接口。
......@@ -221,7 +223,7 @@ onWindowStageCreate() {
- `app_signature`字段配置为应用的指纹信息。指纹信息的配置参见[应用特权配置指南](../../device-dev/subsystems/subsys-app-privilege-config-guide.md#install_list_capabilityjson中配置)
- `permissions`字段中`name`配置为需要预授权的`user_grant`类型的权限名;`permissions`字段中`userCancellable`表示为用户是否能够取消该预授权,配置为true,表示支持用户取消授权,为false则表示不支持用户取消授权。
> 说明:当前仅支持预置应用配置该文件。
> **说明**:当前仅支持预置应用配置该文件。
```json
[
......
......@@ -19,7 +19,7 @@
## 开发步骤
1. 申请`ohos.permission.PUBLISH_AGENT_REMINDER`权限,配置方式请参[访问控制授权申请指导](../security/accesstoken-guidelines.md#stage模型)
1. 申请`ohos.permission.PUBLISH_AGENT_REMINDER`权限,配置方式请参[访问控制授权申请](../security/accesstoken-guidelines.md#配置文件权限声明)
2. [使能通知开关](../notification/notification-enable.md),获得用户授权后,才能使用代理提醒功能。
......
......@@ -20,7 +20,7 @@ OpenHarmony系统开发人员在新增或修改代码之后,希望可以快速
## 环境准备
开发自测试框架依赖于python运行环境,python版本为3.7.5及以上版本,在使用测试框架之前可参以下方式进行配置。
开发自测试框架依赖于python运行环境,python版本为3.7.5及以上版本,在使用测试框架之前可参以下方式进行配置。
源码获取可[参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/get-code/sourcecode-acquire.md)
......
......@@ -3,7 +3,7 @@ OpenHarmony为开发者提供了一套全面的自测试框架,开发者可根
本文从基础环境构建,用例开发,编译以及执行等方面介绍OpenHarmony测试框架如何运行和使用。
## 基础环境构建
测试框架依赖于python运行环境,在使用测试框架之前可参以下方式进行配置。
测试框架依赖于python运行环境,在使用测试框架之前可参以下方式进行配置。
- [环境配置](../device-dev/device-test/xdevice.md)
- [源码获取](../device-dev/get-code/sourcecode-acquire.md)
......@@ -811,6 +811,5 @@ reports/latest
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册