提交 37e2d8b7 编写于 作者: 王鑫

Merge branch 'master' of gitee.com:openharmony/docs

""
......@@ -12,7 +12,7 @@ import dataAbility from '@ohos.data.dataAbility'
import relationalStore from '@ohos.data.relationalStore'
const TABLE_NAME = 'book'
const STORE_CONFIG = { name: 'book.db' }
const STORE_CONFIG = { name: 'book.db',securityLevel: 1 }
const SQL_CREATE_TABLE = 'CREATE TABLE IF NOT EXISTS book(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, introduction TEXT NOT NULL)'
let rdbStore: relationalStore.RdbStore = undefined
......
......@@ -56,7 +56,7 @@ ArkTS卡片与JS卡片具备不同的实现原理及特征,在场景能力上
推荐在开发需求需要动态能力的卡片时使用ArkTS卡片,因为它拥有更加丰富的能力和适应更多的场景,能够提高效率并实现动态化。但如果只需要静态展示卡片,可以考虑使用JS卡片。
# 相关实例
## 相关实例
针对Stage模型卡片提供方的开发,有以下相关实例可供参考:
......
......@@ -23,7 +23,7 @@
## 相关
## 相关
[OpenHarmony应用示例](https://gitee.com/openharmony/applications_app_samples/tree/master/code/SuperFeature/MultiDeviceAppDev)中提供了如下一多示例,感兴趣的开发者可以自行下载、运行及查看效果。
......
......@@ -707,7 +707,7 @@ let connectId = featureAbility.connectAbility(
);
featureAbility.disconnectAbility(connectId).then((data) => {
console.log('data: ${data)}';
console.log('data: ${data)}')
}).catch((error)=>{
console.error('featureAbilityTest result errCode : ${error.code}');
});
......
......@@ -298,7 +298,7 @@ appManager.getRunningProcessInformation((err, data) => {
});
```
## appManager.isSharedBundleRunning
## appManager.isSharedBundleRunning<sup>10+</sup>
isSharedBundleRunning(bundleName: string, versionCode: number): Promise\<boolean>;
......@@ -323,11 +323,20 @@ isSharedBundleRunning(bundleName: string, versionCode: number): Promise\<boolean
| -------- | -------- |
| Promise\<boolean> | Promise对象。返回true表示共享库正在使用,返回false表示共享库不在使用。 |
**错误码**
| 错误码ID | 错误信息 |
| 16000050 | Internal error. |
以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)
**示例:**
```ts
import appManager from '@ohos.app.ability.appManager';
const bundleName = "this is a bundleName";
const versionCode = 1;
appManager.isSharedBundleRunning(bundleName, versionCode).then((data) => {
console.log('The shared bundle running is: ${JSON.stringify(data)}');
}).catch((error) => {
......@@ -335,7 +344,7 @@ appManager.isSharedBundleRunning(bundleName, versionCode).then((data) => {
});
```
## appManager.isSharedBundleRunning
## appManager.isSharedBundleRunning<sup>10+</sup>
isSharedBundleRunning(bundleName: string, versionCode: number, callback: AsyncCallback\<boolean>): void;
......@@ -353,18 +362,22 @@ isSharedBundleRunning(bundleName: string, versionCode: number, callback: AsyncCa
| --------- | ---------------------------------------- | ---- | -------------- |
| bundleName | string | 是 | 表示要查询的共享库包名。 |
| versionCode | number | 是 | 表示要查询的共享库版本号。 |
|AsyncCallback\<boolean>> | 回调函数。返回true表示共享库正在使用,返回false表示共享库不在使用。 |
**参数:**
**错误码**
| 类型 | 说明 |
| -------- | -------- |
|AsyncCallback\<boolean>> | 回调函数。返回true表示共享库正在使用,返回false表示共享库不在使用。 |
| 错误码ID | 错误信息 |
| 16000050 | Internal error. |
以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)
**示例:**
```ts
import appManager from '@ohos.app.ability.appManager';
const bundleName = "this is a bundleName";
const versionCode = 1;
appManager.isSharedBundleRunning(bundleName, versionCode, (err, data) => {
if (err) {
console.error('err: ${JSON.stringify(err)}');
......@@ -749,7 +762,7 @@ killProcessWithAccount(bundleName: string, accountId: number): Promise\<void\>
>
> 当accountId为当前用户时,不需要校验ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS权限。
**需要权限**:ohos.permission.CLEAN_BACKGROUND_PROCESSESohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS
**需要权限**:ohos.permission.CLEAN_BACKGROUND_PROCESSES, ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
......@@ -799,7 +812,7 @@ killProcessWithAccount(bundleName: string, accountId: number, callback: AsyncCal
>
> 当accountId为当前用户时,不需要校验ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS权限。
**需要权限**:ohos.permission.CLEAN_BACKGROUND_PROCESSESohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS
**需要权限**:ohos.permission.CLEAN_BACKGROUND_PROCESSES, ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
......
......@@ -173,6 +173,8 @@ saveAppState(context?: UIAbilityContext): boolean;
```ts
import appRecovery from '@ohos.app.ability.appRecovery';
import errorManager from '@ohos.app.ability.errorManager';
let observer = {
onUnhandledException(errorMsg) {
console.log('onUnhandledException, errorMsg: ', errorMsg);
......
......@@ -298,7 +298,7 @@ getRequestCallback(want: Want): RequestCallback
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
| 参数名 | 值 | 说明 |
| 名称 | 值 | 说明 |
| ------------ | ------------------ | ---------------------- |
| RESULT_OK | 0 | 表示成功。 |
| RESULT_CANCEL | 1 | 表示失败。 |
......@@ -324,7 +324,7 @@ setRequestResult(result: RequestResult): void;
设置请求结果
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
......
......@@ -7,4 +7,10 @@ ExtensionAbility是特定场景扩展能力的基类,继承自[Ability](js-api
> 本模块首批接口从API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
> 本模块接口仅可在Stage模型下使用。
## 导入模块
```ts
import ExtensionAbility from '@ohos.app.ability.ExtensionAbility';
```
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
\ No newline at end of file
......@@ -946,7 +946,7 @@ clearAllMissions(): Promise&lt;void&gt;;
import missionManager from '@ohos.app.ability.missionManager';
try {
missionManager.clearAllMissions(bundleName).then((data) => {
missionManager.clearAllMissions().then((data) => {
console.info('clearAllMissions successfully. Data: ${JSON.stringify(data)}');
}).catch(err => {
console.error('clearAllMissions failed: ${err.message}');
......
......@@ -257,7 +257,7 @@ revokeQuickFix(bundleName: string, callback: AsyncCallback\<void>): void;
撤销快速修复的接口,使用callback方式返回结果。
**需要权限**:ohos.permission.INSTALL_BUNDLE ohos.permission.GET_BUNDLE_INFO_PRIVILEGED
**需要权限**:ohos.permission.INSTALL_BUNDLE, ohos.permission.GET_BUNDLE_INFO_PRIVILEGED
**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.QuickFix
......@@ -302,7 +302,7 @@ revokeQuickFix(bundleName: string): Promise\<void>;
撤销快速修复的接口,使用Promise方式返回结果。
**需要权限**:ohos.permission.INSTALL_BUNDLE ohos.permission.GET_BUNDLE_INFO_PRIVILEGED
**需要权限**:ohos.permission.INSTALL_BUNDLE, ohos.permission.GET_BUNDLE_INFO_PRIVILEGED
**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.QuickFix
......
......@@ -19,7 +19,7 @@ import StartOptions from '@ohos.app.ability.StartOptions';
| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| [windowMode](js-apis-app-ability-abilityConstant.md#abilityconstantwindowmode) | number | 否 | 窗口模式。 |
| [windowMode](js-apis-app-ability-abilityConstant.md#abilityconstantwindowmode) | number | 否 | 窗口模式。<br>**系统API**:该接口为系统接口,三方应用不支持调用。 |
| displayId | number | 否 | 屏幕ID。默认是0,表示当前屏幕。 |
**示例:**
......
......@@ -668,11 +668,12 @@ onRemoteStateChange(callback: OnRemoteStateChangeCallback): void;
```ts
import UIAbility from '@ohos.app.ability.UIAbility';
import window from '@ohos.window';
let caller;
let dstDeviceId: string;
export default class MainAbility extends UIAbility {
onWindowStageCreate(windowStage: Window.WindowStage) {
onWindowStageCreate(windowStage: window.WindowStage) {
this.context.startAbilityByCall({
bundleName: 'com.example.myservice',
abilityName: 'MainUIAbility',
......@@ -688,7 +689,7 @@ onRemoteStateChange(callback: OnRemoteStateChangeCallback): void;
}
}).catch((err) => {
console.log('Caller GetCaller error, error.code: ${JSON.stringify(err.code)}, error.message: ${JSON.stringify(err.message)}');
})
})
}
}
```
......
......@@ -176,13 +176,14 @@ import Want from '@ohos.app.ability.Want';
bundleName: 'com.example.myapplication1',
abilityName: 'ServiceExtensionAbility',
};
context.startAbility(want, (err) => {
console.error(`Failed to startAbility. Code: ${err.code}, message: ${err.message}`);
});
```
```ts
// (2) 该ServiceExtension去启动另一个UIAbility2,并在启动的时候携带参数ability.params.backToOtherMissionStack为true
let context = ...; // ServiceExtensionContext
let context ; // ServiceExtensionContext
let want = {
bundleName: 'com.example.myapplication2',
abilityName: 'MainAbility',
......
......@@ -25,7 +25,7 @@ want的Params操作的常量。
| DLP_PARAMS_MODULE_NAME | ohos.dlp.params.moduleName | 指示DLP模块名称的参数的操作。 <br>**系统API**:该接口为系统接口,三方应用不支持调用。 |
| DLP_PARAMS_ABILITY_NAME | ohos.dlp.params.abilityName | 指示DLP能力名称的参数的操作。 <br>**系统API**:该接口为系统接口,三方应用不支持调用。 |
| DLP_PARAMS_INDEX | ohos.dlp.params.index | 指示DLP索引参数的操作。 <br>**系统API**:该接口为系统接口,三方应用不支持调用。 |
| ABILITY_BACK_TO_OTHER_MISSION_STACK | ability.params.backToOtherMissionStack | 表示是否支持跨任务链返回。 <br>**系统API**:该接口为系统接口,三方应用不支持调用。 |
| ABILITY_BACK_TO_OTHER_MISSION_STACK | ability.params.backToOtherMissionStack | 表示是否支持跨任务链返回。 |
| ABILITY_RECOVERY_RESTART<sup>10+</sup> | ohos.ability.params.abilityRecoveryRestart | 指示当前Ability是否发生了故障恢复重启。 |
| CONTENT_TITLE_KEY<sup>10+</sup> | ohos.extra.param.key.contentTitle | 指示原子化服务支持分享标题的参数的操作。 |
| SHARE_ABSTRACT_KEY<sup>10+</sup> | ohos.extra.param.key.shareAbstract | 指示原子化服务支持分享内容的参数的操作。 |
......
......@@ -36,7 +36,6 @@ FormBindingData相关描述。
| data | Object | 是 | js卡片要展示的数据。可以是包含若干键值对的Object或者 json 格式的字符串。|
| proxies<sup>10+</sup> | Array<[ProxyData](#proxydata)> | 否 | 卡片代理刷新的订阅信息,默认为空数组。|
## createFormBindingData
createFormBindingData(obj?: Object | string): FormBindingData
......@@ -75,4 +74,15 @@ try {
} catch (error) {
console.error(`catch error, code: ${error.code}, message: ${error.message}`);
}
```
\ No newline at end of file
```
## ProxyData
定义表单代理数据。
**系统能力**:SystemCapability.Ability.Form
| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| key | string | 是 | 代理的密钥。值取决于数据发布者。|
| subscriberId | string | 否 | 订阅者ID。值取决于数据发布者。默认值为当前卡片ID。|
\ No newline at end of file
......@@ -2144,6 +2144,8 @@ acquireFormData(formId: string, callback: AsyncCallback<{[key: string]: Object}>
| 错误码ID | 错误信息 |
| -------- | -------- |
| 201 | Permissions denied. |
| 401 | If the input parameter is not valid parameter. |
| 16500050 | An IPC connection error happened. |
| 16500060 | A service connection error happened, please try again later. |
| 16500100 | Failed to obtain the configuration information. |
......@@ -2196,6 +2198,8 @@ acquireFormData(formId: string): Promise<{[key: string]: Object}>;
| 错误码ID | 错误信息 |
| -------- | -------- |
| 201 | Permissions denied. |
| 401 | If the input parameter is not valid parameter. |
| 16500050 | An IPC connection error happened. |
| 16500060 | A service connection error happened, please try again later. |
| 16500100 | Failed to obtain the configuration information. |
......@@ -2246,9 +2250,14 @@ getRunningFormInfosByFilter(formProviderFilter: formInfo.FormProviderFilter): Pr
| 错误码ID | 错误信息 |
| -------- | -------- |
| 201 | Permissions denied. |
| 202 | The application is not a system application. |
| 401 | If the input parameter is not valid parameter. |
| 16500050 | An IPC connection error happened. |
| 16500100 | Failed to obtain the configuration information. |
| 16501000 | An internal functional error occurred. |
```ts
import formHost from '@ohos.app.form.formHost';
......@@ -2271,7 +2280,7 @@ try {
## getRunningFormInfosByFilter<sup>10+</sup>
getRunningFormInfosByFilter(formProviderFilter: formInfo.FormProviderFilter, callback: AsyncCallback&lt;Array&lt;formInfo.FormInfo&gt;&gt;): void
getRunningFormInfosByFilter(formProviderFilter: formInfo.FormProviderFilter, callback: AsyncCallback&lt;Array&lt;formInfo.RunningFormInfo&gt;&gt;): void
根据提供方信息查询卡片已有的使用方列表信息。使用callback异步回调。
......@@ -2283,7 +2292,7 @@ getRunningFormInfosByFilter(formProviderFilter: formInfo.FormProviderFilter, cal
| 参数名 | 类型 | 必填 | 说明 |
| ----------- | --------------- | ---- | -------------------------------- |
| formProviderFilter | formInfo.FormProviderFilter [formInfo.FormProviderFilter](js-apis-app-form-formInfo.md#formProviderFilter) | 是 | 卡片提供方应用信息。 |
| formProviderFilter | [formInfo.FormProviderFilter](js-apis-app-form-formInfo.md#formProviderFilter) | 是 | 卡片提供方应用信息。 |
| callback | AsyncCallback&lt;Array&lt;[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)&gt;&gt; | 是 | 回调函数。返回查询到的使用方列表信息,error为undefined,data为查询到的使用方列表信息;否则为错误对象。 |
**错误码:**
......@@ -2292,9 +2301,14 @@ getRunningFormInfosByFilter(formProviderFilter: formInfo.FormProviderFilter, cal
| 错误码ID | 错误信息 |
| -------- | -------- |
| 201 | Permissions denied. |
| 202 | The application is not a system application. |
| 401 | If the input parameter is not valid parameter. |
| 16500050 | An IPC connection error happened. |
| 16500100 | Failed to obtain the configuration information. |
| 16501000 | An internal functional error occurred. |
```ts
import formHost from '@ohos.app.form.formHost';
......@@ -2319,7 +2333,8 @@ try {
## getRunningFormInfoById<sup>10+</sup>
getRunningFormInfoById(formId: string): Promise&lt;Array&lt;formInfo.RunningFormInfo&gt;&gt;
function getRunningFormInfoById(formId: string): Promise&lt;formInfo.RunningFormInfo&gt;
根据formId查询卡片已有的使用方列表信息。使用Promise异步回调。
......@@ -2337,7 +2352,7 @@ getRunningFormInfoById(formId: string): Promise&lt;Array&lt;formInfo.RunningForm
| 类型 | 说明 |
| ------------------- | ------------------------- |
| Promise&lt;Array&lt;formInfo.RunningFormInfo[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)&gt;&gt; | Promise对象,返回查询到的使用方列表信息。 |
| Promise&lt;[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)&gt; | Promise对象,返回查询到的使用方列表信息。 |
**错误码:**
......@@ -2345,9 +2360,14 @@ getRunningFormInfoById(formId: string): Promise&lt;Array&lt;formInfo.RunningForm
| 错误码ID | 错误信息 |
| -------- | -------- |
| 201 | Permissions denied. |
| 202 | The application is not a system application. |
| 401 | If the input parameter is not valid parameter. |
| 16500050 | An IPC connection error happened. |
| 16500100 | Failed to obtain the configuration information. |
| 16501000 | An internal functional error occurred. |
```ts
import formHost from '@ohos.app.form.formHost';
let formId = '12400633174999288';
......@@ -2364,7 +2384,7 @@ try {
## getRunningFormInfoById<sup>10+</sup>
getRunningFormInfoById(formId: string, callback: AsyncCallback&lt;Array&lt;formInfo.FormInfo&gt;&gt;): void
getRunningFormInfoById(formId: string, callback: AsyncCallback&lt;formInfo.RunningFormInfo&gt;): void
根据提供方信息查询卡片已有的使用方列表信息。使用callback异步回调。
......@@ -2377,7 +2397,7 @@ getRunningFormInfoById(formId: string, callback: AsyncCallback&lt;Array&lt;formI
| 参数名 | 类型 | 必填 | 说明 |
| ----------- | --------------- | ---- | -------------------------------- |
| formId | string | 是 | 卡片标识。 |
| callback | AsyncCallback&lt;Array&lt;[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)&gt;&gt; | 是 | 回调函数。返回查询到的使用方列表信息,error为undefined,data为查询到的使用方列表信息;否则为错误对象。 |
| callback | AsyncCallback&lt;[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)&gt; | 是 | 回调函数。返回查询到的使用方列表信息,error为undefined,data为查询到的使用方列表信息;否则为错误对象。 |
**错误码:**
......@@ -2385,7 +2405,11 @@ getRunningFormInfoById(formId: string, callback: AsyncCallback&lt;Array&lt;formI
| 错误码ID | 错误信息 |
| -------- | -------- |
| 201 | Permissions denied. |
| 202 | The application is not a system application. |
| 401 | If the input parameter is not valid parameter. |
| 16500050 | An IPC connection error happened. |
| 16500100 | Failed to obtain the configuration information. |
| 16501000 | An internal functional error occurred. |
```ts
......@@ -2404,3 +2428,143 @@ try {
console.error(`catch error, code: ${error.code}, message: ${error.message}`);
}
```
## on('notifyVisible')<sup>10+</sup>
on(type: 'notifyVisible', observerCallback: Callback&lt;Array&lt;[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)&gt;&gt;, bundleName?: string): void
订阅通知卡片可见的事件。触发通知卡片可见场景为:
​ 调用notifyVisibleForms接口通知对应卡片可见性变更为可见状态
**需要权限**:ohos.permission.REQUIRE_FORM
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type | string | 是 | 仅允许填写'notifyVisible',表示订阅通知卡片可见的事件。 |
| callback | Callback &lt;Array&lt;[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)&gt;&gt; | 是 | 回调函数。返回订阅通知卡片可见的RunningFormInfo。 |
| bundleName | string | 否 | 指定卡片使用方的bundleName,用于订阅卡片在该使用方的可见状态变更事件。 |
**示例:**
```ts
import formHost from '@ohos.app.form.formHost';
let bundleName = 'ohos.samples.FormApplication';
let callback = function(data) {
console.log('form change visibility, data: ${JSON.stringify(data)');
}
formHost.on('notifyVisible', callback);
formHost.on('notifyVisible', callback, bundleName);
```
## off('notifyVisible')<sup>10+</sup>
off(type: "notifyVisible", observerCallback?: Callback&lt;Array&lt;[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)&gt;&gt;, bundleName?: string): void
取消订阅通知卡片可见的事件。
**需要权限**:ohos.permission.REQUIRE_FORM
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type | string | 是 | 仅允许填写'notifyVisible',表示取消订阅通知卡片为可见的事件。 |
| callback | Callback &lt;Array&lt;[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)&gt;&gt; | 否 | 入参,注册时注册进去的callback。缺省时,表示注销对应已注册订阅的回调。<br> 需与对应on('notifyVisible')的callback一致。 |
| bundleName | string | 否 | 指定卡片使用方的bundleName。<br> 填写该参数时,与注册时填写bundleName的on接口对应。<br> 用于订阅卡片在该使用方的可见状态变更事件。 |
**示例:**
```ts
import formHost from '@ohos.app.form.formHost';
let bundleName = 'ohos.samples.FormApplication';
let callback = function(data) {
console.log('form change visibility, data: ${JSON.stringify(data)');
}
formHost.off('notifyVisible', callback);
formHost.off('notifyVisible', callback, bundleName);
```
> **说明:**
> on('notifyVisible', callback)与off('notifyVisible', callback)相对应;
> on('notifyVisible', callback, bundleName)与off('notifyVisible', callback, bundleName)相对应;
> 订阅(on)只能由自己对应的取消订阅接口(off)取消。
## on('notifyInvisible')<sup>10+</sup>
on(type: 'notifyInvisible', observerCallback: Callback&lt;Array&lt;[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)&gt;>, bundleName?: string): void
订阅通知卡片不可见的事件。触发通知卡片不可见场景为:
​ 调用notifyInvisibleForms接口通知对应卡片可见性变更为不可见状态
**需要权限**:ohos.permission.REQUIRE_FORM
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type | string | 是 | 仅允许填写'notifyInvisible',表示订阅卡片不可见的事件。 |
| callback | Callback &lt;Array&lt;[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)&gt;&gt; | 是 | 回调函数。返回订阅通知卡片不可见的RunningFormInfo。 |
| bundleName | string | 否 | 指定卡片使用方的bundleName,用于订阅卡片在该使用方的可见状态变更事件。 |
**示例:**
```ts
import formHost from '@ohos.app.form.formHost';
let bundleName = 'ohos.samples.FormApplication';
let callback = function(data) {
console.log('form change invisibility, data: ${JSON.stringify(data)');
}
formHost.on('notifyInvisible', callback);
formHost.on('notifyInvisible', callback, bundleName);
```
## off('notifyInvisible')<sup>10+</sup>
off(type: "notifyInvisible", observerCallback?: Callback&lt;Array&lt;[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)>&gt;, bundleName?: string): void
取消订阅通知卡片不可见事件。
**需要权限**:ohos.permission.REQUIRE_FORM
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type | string | 是 | 仅允许填写'notifyInvisible',表示卡片可见性变更为不可见。 |
| callback | Callback &lt;Array&lt;[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)&gt;&gt; | 否 | 入参,注册时注册进去的callback。缺省时,表示注销对应已注册事件回调。<br/> 需与对应on('notifyVisible')的callback一致。 |
| bundleName | string | 否 | 指定卡片使用方的bundleName。<br> 填写该参数时,与注册时填写bundleName的on接口对应。<br> 用于订阅卡片在该使用方的可见状态变更事件。 |
**示例:**
```ts
import formHost from '@ohos.app.form.formHost';
let bundleName = 'ohos.samples.FormApplication';
let callback = function(data) {
console.log('form change invisibility, data: ${JSON.stringify(data)');
}
formHost.off('notifyInvisible', callback);
formHost.off('notifyInvisible', callback, bundleName);
```
> **说明:**
> on('notifyInvisible', callback)与off('notifyInvisible', callback)相对应;
> on('notifyInvisible', callback, bundleName)与off('notifyInvisible', callback, bundleName)相对应;
> 订阅(on)只能由自己对应的取消订阅接口(off)取消。
\ No newline at end of file
......@@ -18,8 +18,6 @@ import formInfo from '@ohos.app.form.formInfo';
**系统能力**:SystemCapability.Ability.Form
**系统API**: 此接口为系统接口,三方应用不支持调用。
| 名称 | 类型 | 可读 | 可写 | 说明 |
| ----------- | -------- | -------- | -------------------- | ------------------------------------------------------------ |
| bundleName | string | 是 | 否 | 卡片所属包的Bundle名称。 |
......@@ -27,6 +25,7 @@ import formInfo from '@ohos.app.form.formInfo';
| abilityName | string | 是 | 否 | 卡片所属的Ability名称。 |
| name | string | 是 | 否 | 卡片名称。 |
| description | string | 是 | 否 | 卡片描述。 |
| descriptionId | number | 是 | 否 | 卡片描述id。 |
| type | [FormType](#formtype) | 是 | 否 | 卡片类型。当前支持JS卡片。 |
| jsComponentName | string | 是 | 否 | js卡片的组件名。 |
| colorMode | [ColorMode](#colormode) | 是 | 否 | 卡片颜色模式。 |
......@@ -102,7 +101,7 @@ import formInfo from '@ohos.app.form.formInfo';
| HEIGHT_KEY | 'ohos.extra.param.key.form_height' | 卡片高度。 |
| TEMPORARY_KEY | 'ohos.extra.param.key.form_temporary' | 临时卡片。 |
| ABILITY_NAME_KEY | 'ohos.extra.param.key.ability_name' | ability名称。 |
| DEVICE_ID_KEY | 'ohos.extra.param.key.device_id' <br>**系统API**: 此接口为系统接口,三方应用不支持调用。 | 设备标识。 |
| DEVICE_ID_KEY | 'ohos.extra.param.key.device_id' | 设备标识。 <br>**系统API**: 此接口为系统接口,三方应用不支持调用。 |
| BUNDLE_NAME_KEY | 'ohos.extra.param.key.bundle_name' | 指示指定要获取的捆绑Bundle名称的键。 |
| LAUNCH_REASON_KEY<sup>10+</sup> | 'ohos.extra.param.key.form_launch_reason' | 卡片创建原因。 |
| PARAM_FORM_CUSTOMIZE_KEY<sup>10+</sup> | 'ohos.extra.param.key.form_customize' | 自定义数据。 |
......@@ -128,9 +127,9 @@ import formInfo from '@ohos.app.form.formInfo';
**系统能力**:SystemCapability.Ability.Form
| 名称 | 类型 | 说明 |
| ----------- | ---- | ------------ |
| moduleName | string | 选填。仅保留moduleName与提供值相符的卡片信息。<br>未填写时则不通过moduleName进行过滤。 |
| 名称 | 类型 | 必填 |说明 |
| ----------- | ---- | ------------ |------------ |
| moduleName | string |否 | 选填。仅保留moduleName与提供值相符的卡片信息。<br>未填写时则不通过moduleName进行过滤。 |
## VisibilityType
......@@ -140,7 +139,7 @@ import formInfo from '@ohos.app.form.formInfo';
| 名称 | 值 | 说明 |
| ----------- | ---- | ------------ |
| UNKNOWN | 0 | 表示卡片为未知。 |
| UNKNOWN<sup>10+</sup> | 0 | 表示卡片为未知。 |
| FORM_VISIBLE | 1 | 表示卡片为可见。 |
| FORM_INVISIBLE | 2 | 表示卡片为不可见。 |
......@@ -150,6 +149,8 @@ import formInfo from '@ohos.app.form.formInfo';
**系统能力**:SystemCapability.Ability.Form
**系统API**: 此接口为系统接口,三方应用不支持调用。
| 名称 | 类型 | 可读 | 可写 | 说明 |
| ----------- | -------- | -------- | -------------------- | ------------------------------------------------------------ |
| formId | string | 是 | 否 | 卡片标识。 |
......
......@@ -539,7 +539,7 @@ isRequestPublishFormSupported(callback: AsyncCallback&lt;boolean&gt;): void
| 错误码ID | 错误信息 |
| -------- | -------- |
| 202 | The application is not a system application. |
| 202 | If the application is not a system application. |
| 401 | If the input parameter is not valid parameter. |
| 16500050 | An IPC connection error happened. |
| 16501000 | An internal functional error occurred. |
......@@ -602,7 +602,7 @@ isRequestPublishFormSupported(): Promise&lt;boolean&gt;
| 错误码ID | 错误信息 |
| -------- | -------- |
| 202 | The application is not a system application. |
| 202 | If the application is not a system application. |
| 16500050 | An IPC connection error happened. |
| 16501000 | An internal functional error occurred. |
......
......@@ -9,6 +9,12 @@ StaticSubscriberExtensionContext模块提供StaticSubscriberExtensionAbility具
> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
> 本模块接口仅可在Stage模型下使用。
## 导入模块
```ts
import StaticSubscriberExtensionContext from '@ohos.application.StaticSubscriberExtensionContext'
```
## 使用说明
在使用StaticSubscriberExtensionContext的功能前,需要通过StaticSubscriberExtensionAbility获取。
......
......@@ -404,7 +404,7 @@ killProcessWithAccount(bundleName: string, accountId: number): Promise\<void\>
>
> 当accountId为当前用户时,不需要校验ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS权限。
**需要权限**:ohos.permission.CLEAN_BACKGROUND_PROCESSESohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS
**需要权限**:ohos.permission.CLEAN_BACKGROUND_PROCESSES, ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
......@@ -446,7 +446,7 @@ killProcessWithAccount(bundleName: string, accountId: number, callback: AsyncCal
**系统API**: 此接口为系统接口,三方应用不支持调用。
**需要权限**:ohos.permission.CLEAN_BACKGROUND_PROCESSESohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS
**需要权限**:ohos.permission.CLEAN_BACKGROUND_PROCESSES, ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS
**参数:**
......
......@@ -15,11 +15,13 @@ import StaticSubscriberExtensionAbility from '@ohos.application.StaticSubscriber
## 属性
**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.AbilityCore
**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core
**系统API**:该接口为系统接口,三方应用不支持调用。
| 名称 | 类型 | 可读 | 可写 | 说明 |
| ------- | ------------------------------------------------------------ | ---- | ---- | -------- |
| context | [StaticSubscriberExtensionContext](js-apis-application-StaticSubscriberExtensionContext.md) | 是 | 否 | 上下文。 |
| context<sup>10+</sup> | [StaticSubscriberExtensionContext](js-apis-application-StaticSubscriberExtensionContext.md) | 是 | 否 | 上下文。 |
## StaticSubscriberExtensionAbility.onReceiveEvent
......
......@@ -875,6 +875,382 @@ router.replaceUrl({
});
```
### pushNamedRoute
pushNamedRoute(options: NamedRouterOptions): Promise&lt;void&gt;
跳转到指定的命名路由页面。
**系统能力:** SystemCapability.ArkUI.ArkUI.Full
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------------------------------- | ---- | --------- |
| options | [NamedRouterOptions](js-apis-router.md#namedrouteroptions10) | 是 | 跳转页面描述信息。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | --------- |
| Promise&lt;void&gt; | 异常返回结果。 |
**错误码:**
以下错误码的详细介绍请参见[ohos.router(页面路由)](../errorcodes/errorcode-router.md)错误码。
| 错误码ID | 错误信息 |
| --------- | ------- |
| 100001 | if UI execution context not found. |
| 100003 | if the pages are pushed too much. |
| 100004 | if the named route is not exist. |
**示例:**
```ts
let router = uiContext.getRouter();
router.pushNamedRoute({
name: 'myPage',
params: {
data1: 'message',
data2: {
data3: [123, 456, 789]
}
}
})
.then(() => {
// success
})
.catch(err => {
console.error(`pushNamedRoute failed, code is ${err.code}, message is ${err.message}`);
})
```
### pushNamedRoute
pushNamedRoute(options: NamedRouterOptions, callback: AsyncCallback&lt;void&gt;): void
跳转到指定的命名路由页面。
**系统能力:** SystemCapability.ArkUI.ArkUI.Full
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------------------------------- | ---- | --------- |
| options | [NamedRouterOptions](js-apis-router.md#namedrouteroptions10) | 是 | 跳转页面描述信息。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 异常响应回调。 |
**错误码:**
以下错误码的详细介绍请参见[ohos.router(页面路由)](../errorcodes/errorcode-router.md)错误码。
| 错误码ID | 错误信息 |
| --------- | ------- |
| 100001 | if UI execution context not found. |
| 100003 | if the pages are pushed too much. |
| 100004 | if the named route is not exist. |
**示例:**
```ts
let router = uiContext.getRouter();
router.pushNamedRoute({
name: 'myPage',
params: {
data1: 'message',
data2: {
data3: [123, 456, 789]
}
}
}, (err) => {
if (err) {
console.error(`pushNamedRoute failed, code is ${err.code}, message is ${err.message}`);
return;
}
console.info('pushNamedRoute success');
})
```
### pushNamedRoute
pushNamedRoute(options: NamedRouterOptions, mode: RouterMode): Promise&lt;void&gt;
跳转到指定的命名路由页面。
**系统能力:** SystemCapability.ArkUI.ArkUI.Full
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------------------------------- | ---- | ---------- |
| options | [NamedRouterOptions](js-apis-router.md#namedrouteroptions10) | 是 | 跳转页面描述信息。 |
| mode | [RouterMode](js-apis-router.md#routermode9) | 是 | 跳转页面使用的模式。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | --------- |
| Promise&lt;void&gt; | 异常返回结果。 |
**错误码:**
以下错误码的详细介绍请参见[ohos.router(页面路由)](../errorcodes/errorcode-router.md)错误码。
| 错误码ID | 错误信息 |
| --------- | ------- |
| 100001 | if UI execution context not found. |
| 100003 | if the pages are pushed too much. |
| 100004 | if the named route is not exist. |
**示例:**
```ts
let router = uiContext.getRouter();
router.pushNamedRoute({
name: 'myPage',
params: {
data1: 'message',
data2: {
data3: [123, 456, 789]
}
}
}, router.RouterMode.Standard)
.then(() => {
// success
})
.catch(err => {
console.error(`pushNamedRoute failed, code is ${err.code}, message is ${err.message}`);
})
```
### pushNamedRoute
pushNamedRoute(options: NamedRouterOptions, mode: RouterMode, callback: AsyncCallback&lt;void&gt;): void
跳转到指定的命名路由页面。
**系统能力:** SystemCapability.ArkUI.ArkUI.Full
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------------------------------- | ---- | ---------- |
| options | [NamedRouterOptions](js-apis-router.md#namedrouteroptions10) | 是 | 跳转页面描述信息。 |
| mode | [RouterMode](js-apis-router.md#routermode9) | 是 | 跳转页面使用的模式。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 异常响应回调。 |
**错误码:**
以下错误码的详细介绍请参见[ohos.router(页面路由)](../errorcodes/errorcode-router.md)错误码。
| 错误码ID | 错误信息 |
| --------- | ------- |
| 100001 | if UI execution context not found. |
| 100003 | if the pages are pushed too much. |
| 100004 | if the named route is not exist. |
**示例:**
```ts
let router = uiContext.getRouter();
router.pushNamedRoute({
name: 'myPage',
params: {
data1: 'message',
data2: {
data3: [123, 456, 789]
}
}
}, router.RouterMode.Standard, (err) => {
if (err) {
console.error(`pushNamedRoute failed, code is ${err.code}, message is ${err.message}`);
return;
}
console.info('pushNamedRoute success');
})
```
### replaceNamedRoute
replaceNamedRoute(options: NamedRouterOptions): Promise&lt;void&gt;
用指定的命名路由页面替换当前页面,并销毁被替换的页面。
**系统能力:** SystemCapability.ArkUI.ArkUI.Full
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------------------------------- | ---- | ------------------ |
| options | [NamedRouterOptions](js-apis-router.md#namedrouteroptions10) | 是 | 替换页面描述信息。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | --------- |
| Promise&lt;void&gt; | 异常返回结果。 |
**错误码:**
以下错误码的详细介绍请参见[ohos.router(页面路由)](../errorcodes/errorcode-router.md)错误码。
| 错误码ID | 错误信息 |
| --------- | ------- |
| 100001 | if UI execution context not found. |
| 100004 | if the named route is not exist. |
**示例:**
```ts
let router = uiContext.getRouter();
router.replaceNamedRoute({
name: 'myPage',
params: {
data1: 'message'
}
})
.then(() => {
// success
})
.catch(err => {
console.error(`replaceNamedRoute failed, code is ${err.code}, message is ${err.message}`);
})
```
### replaceNamedRoute
replaceNamedRoute(options: NamedRouterOptions, callback: AsyncCallback&lt;void&gt;): void
用指定的命名路由页面替换当前页面,并销毁被替换的页面。
**系统能力:** SystemCapability.ArkUI.ArkUI.Full
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------------------------------- | ---- | ------------------ |
| options | [NamedRouterOptions](js-apis-router.md#namedrouteroptions10) | 是 | 替换页面描述信息。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 异常响应回调。 |
**错误码:**
以下错误码的详细介绍请参见[ohos.router(页面路由)](../errorcodes/errorcode-router.md)错误码。
| 错误码ID | 错误信息 |
| --------- | ------- |
| 100001 | if UI execution context not found. |
| 100004 | if the named route is not exist. |
**示例:**
```ts
let router = uiContext.getRouter();
router.replaceNamedRoute({
name: 'myPage',
params: {
data1: 'message'
}
}, (err) => {
if (err) {
console.error(`replaceNamedRoute failed, code is ${err.code}, message is ${err.message}`);
return;
}
console.info('replaceNamedRoute success');
})
```
### replaceNamedRoute
replaceNamedRoute(options: NamedRouterOptions, mode: RouterMode): Promise&lt;void&gt;
用指定的命名路由页面替换当前页面,并销毁被替换的页面。
**系统能力:** SystemCapability.ArkUI.ArkUI.Full
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------------------------------- | ---- | ---------- |
| options | [NamedRouterOptions](js-apis-router.md#namedrouteroptions10) | 是 | 替换页面描述信息。 |
| mode | [RouterMode](js-apis-router.md#routermode9) | 是 | 跳转页面使用的模式。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | --------- |
| Promise&lt;void&gt; | 异常返回结果。 |
**错误码:**
以下错误码的详细介绍请参见[ohos.router(页面路由)](../errorcodes/errorcode-router.md)错误码。
| 错误码ID | 错误信息 |
| --------- | ------- |
| 100001 | if can not get the delegate. |
| 100004 | if the named route is not exist. |
**示例:**
```ts
let router = uiContext.getRouter();
router.replaceNamedRoute({
name: 'myPage',
params: {
data1: 'message'
}
}, router.RouterMode.Standard)
.then(() => {
// success
})
.catch(err => {
console.error(`replaceNamedRoute failed, code is ${err.code}, message is ${err.message}`);
})
```
### replaceNamedRoute
replaceNamedRoute(options: NamedRouterOptions, mode: RouterMode, callback: AsyncCallback&lt;void&gt;): void
用指定的命名路由页面替换当前页面,并销毁被替换的页面。
**系统能力:** SystemCapability.ArkUI.ArkUI.Full
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------------------------------- | ---- | ---------- |
| options | [NamedRouterOptions](js-apis-router.md#namedrouteroptions10) | 是 | 替换页面描述信息。 |
| mode | [RouterMode](js-apis-router.md#routermode9) | 是 | 跳转页面使用的模式。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 异常响应回调。 |
**错误码:**
以下错误码的详细介绍请参见[ohos.router(页面路由)](../errorcodes/errorcode-router.md)错误码。
| 错误码ID | 错误信息 |
| --------- | ------- |
| 100001 | if UI execution context not found. |
| 100004 | if the named route is not exist. |
**示例:**
```ts
let router = uiContext.getRouter();
router.replaceNamedRoute({
name: 'myPage',
params: {
data1: 'message'
}
}, router.RouterMode.Standard, (err) => {
if (err) {
console.error(`replaceNamedRoute failed, code is ${err.code}, message is ${err.message}`);
return;
}
console.info('replaceNamedRoute success');
});
```
### back
back(options?: RouterOptions ): void
......
......@@ -369,10 +369,6 @@ getEncoded(): DataBlob
**错误码:**
> **说明:**
>
> 从API version 10开始,该接口支持抛出错误码。
| 错误码ID | 错误信息 |
| -------- | ---------------------- |
| 801 | this operation is not supported. |
......@@ -794,8 +790,8 @@ createAsyKeyGenerator(algName: string): AsyKeyGenerator
| 错误码ID | 错误信息 |
| -------- | ---------------------- |
| 401 | invalid parameters. |
| 801<sup>10+</sup> | this operation is not supported. |
| 17620001<sup>10+</sup> | memory error. |
| 801 | this operation is not supported. |
| 17620001 | memory error. |
**示例:**
......@@ -837,7 +833,7 @@ generateKeyPair(callback: AsyncCallback\<KeyPair>): void
| -------- | ---------------------- |
| 401 | invalid parameters. |
| 17620001 | memory error. |
| 17630001<sup>10+</sup> | crypto operation error. |
| 17630001 | crypto operation error. |
**示例:**
......@@ -874,7 +870,7 @@ generateKeyPair(): Promise\<KeyPair>
| -------- | ---------------------- |
| 401 | invalid parameters. |
| 17620001 | memory error. |
| 17630001<sup>10+</sup> | crypto operation error. |
| 17630001 | crypto operation error. |
**示例:**
......@@ -912,7 +908,7 @@ convertKey(pubKey: DataBlob, priKey: DataBlob, callback: AsyncCallback\<KeyPair\
| -------- | ---------------------- |
| 401 | invalid parameters. |
| 17620001 | memory error. |
| 17630001<sup>10+</sup> | crypto operation error. |
| 17630001 | crypto operation error. |
**示例:**
......@@ -960,7 +956,7 @@ convertKey(pubKey: DataBlob, priKey: DataBlob): Promise\<KeyPair>
| -------- | ---------------------- |
| 401 | invalid parameters. |
| 17620001 | memory error. |
| 17630001<sup>10+</sup> | crypto operation error. |
| 17630001 | crypto operation error. |
**示例:**
......@@ -1315,7 +1311,7 @@ createCipher(transformation: string): Cipher
| -------- | ---------------------- |
| 401 | invalid parameters. |
| 801 | this operation is not supported. |
| 17620001<sup>10+</sup> | memory error. |
| 17620001 | memory error. |
**示例:**
......@@ -1837,8 +1833,8 @@ Sign实例生成。<br/>支持的规格详见框架概述“[签名验签规格]
| 错误码ID | 错误信息 |
| -------- | ---------------------- |
| 401 | invalid parameters. |
| 801<sup>10+</sup> | this operation is not supported. |
| 17620001<sup>10+</sup> | memory error. |
| 801 | this operation is not supported. |
| 17620001 | memory error. |
**示例:**
......@@ -2224,8 +2220,8 @@ Verify实例生成。<br/>支持的规格详见框架概述“[签名验签规
| 错误码ID | 错误信息 |
| -------- | ---------------------- |
| 401 | invalid parameters. |
| 801<sup>10+</sup> | this operation is not supported. |
| 17620001<sup>10+</sup> | memory error. |
| 801 | this operation is not supported. |
| 17620001 | memory error. |
**示例:**
......@@ -2570,8 +2566,8 @@ KeyAgreement实例生成。<br/>支持的规格详见框架概述“[密钥协
| 错误码ID | 错误信息 |
| -------- | ---------------------- |
| 401 | invalid parameters. |
| 801<sup>10+</sup> | this operation is not supported. |
| 17620001<sup>10+</sup> | memory error. |
| 801 | this operation is not supported. |
| 17620001 | memory error. |
**示例:**
......
......@@ -50,7 +50,7 @@ import deviceInfo from '@ohos.deviceInfo'
| buildTime | string | 是 | 否 | 构建时间。 |
| buildRootHash | string | 是 | 否 | 构建版本Hash。 |
| udid<sup>7+</sup> | string | 是 | 否 | 设备Udid。<br/>**需要权限**:ohos.permission.sec.ACCESS_UDID|
| distributionOSName<sup>10+</sup> | String | 是 | 否 | 分布式操作系统名称。 |
| distributionOSVersion<sup>10+</sup> | String | 是 | 否 | 分布式操作系统版本号。 |
| distributionOSApiVersion<sup>10+</sup> | number| 是 | 否 | 分布式操作系统api版本。 |
| distributionOSName<sup>10+</sup> | String | 是 | 否 | 发行版系统名称。 |
| distributionOSVersion<sup>10+</sup> | String | 是 | 否 | 发行版系统版本号。 |
| distributionOSApiVersion<sup>10+</sup> | number| 是 | 否 | 发行版系统api版本。 |
| distributionOSReleaseType<sup>10+</sup> | String | 是 | 否 | 发行版系统类型。 |
......@@ -14,11 +14,13 @@ Mission迁移完成后调用,返回迁移结果。
**系统能力**:SystemCapability.Ability.AbilityRuntime.Mission
**系统API**:该接口为系统接口,三方应用不支持调用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| result | number | | 迁移任务的结果。 |
| result | number | | 迁移任务的结果。 |
**示例:**
......
......@@ -23,7 +23,7 @@ import common from '@ohos.app.ability.common';
import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility';
import formBindingData from '@ohos.app.form.formBindingData';
class MyFormExtensionAbility extends FormExtensionAbility {
export default class MyFormExtensionAbility extends FormExtensionAbility {
onAddForm(want) {
let formContext = this.context; // 获取FormExtensionContext
// ...
......
......@@ -1617,8 +1617,8 @@ startAbilityByCallWithAccount(want: Want, accountId: number): Promise&lt;Caller&
let want = {
bundleName: 'com.acts.actscalleeabilityrely',
moduleName: 'entry',
abilityName: 'EntryAbility'
deviceId: ''
abilityName: 'EntryAbility',
deviceId: '',
parameters: {
// 'ohos.aafwk.param.callAbilityToForeground' 值设置为true时为前台启动, 设置false或不设置为后台启动
'ohos.aafwk.param.callAbilityToForeground': true
......
......@@ -1228,7 +1228,7 @@ terminateSelf(): Promise&lt;void&gt;;
// 处理业务逻辑错误
console.error(`terminateSelf failed, code is ${err.code}, message is ${err.message}`);
});
} catch (error) {
} catch (err) {
// 捕获同步的参数错误
console.error(`terminateSelf failed, code is ${err.code}, message is ${err.message}`);
}
......@@ -2577,8 +2577,8 @@ startAbilityByCallWithAccount(want: Want, accountId: number): Promise&lt;Caller&
let want = {
bundleName: 'com.acts.actscalleeabilityrely',
moduleName: 'entry',
abilityName: 'EntryAbility'
deviceId: ''
abilityName: 'EntryAbility',
deviceId: '',
parameters: {
// 'ohos.aafwk.param.callAbilityToForeground' 值设置为true时为前台启动, 设置false或不设置为后台启动
'ohos.aafwk.param.callAbilityToForeground': true
......
......@@ -319,7 +319,7 @@ try {
| 名称 | 类型 | 必填 | 说明 |
| ------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| title | string\| [Resource](../arkui-ts/ts-types.md#resource类型)<sup>9+</sup> | 否 | 标题文本。 |
| buttons | [[Button](#button),[Button](#button)?,[Button](#button)?,[Button](#button)?,[Button](#button)?,[Button](#button)?] | 是 | 菜单中菜单项按钮的数组,结构为:{text:'button',&nbsp;color:&nbsp;'\#666666'},支持1-6个按钮。大于6个按钮时弹窗不显示。 |
| buttons | [[Button](#button),[Button](#button)?,[Button](#button)?,[Button](#button)?,[Button](#button)?,[Button](#button)?] | 是 | 菜单中菜单项按钮的数组,结构为:{text:'button',&nbsp;color:&nbsp;'\#666666'},支持1-6个按钮。按钮数量大于6个时,仅显示前6个按钮,之后的按钮不显示。 |
## ActionMenuSuccessResponse
......
......@@ -17,12 +17,16 @@ import uriPermissionManager from '@ohos.application.uriPermissionManager';
## uriPermissionManager.grantUriPermission
grantUriPermission(uri: string, flag: wantConstant.Flags, accessTokenId: number, callback: AsyncCallback&lt;number&gt;): void
grantUriPermission(uri: string, flag: wantConstant.Flags, targetBundleName: string, callback: AsyncCallback&lt;number&gt;): void;
授权URI给指定应用,通过callback返回结果。
**系统API**:该接口为系统接口,三方应用不支持调用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
**需要权限:** ohos.permission.PROXY_AUTHORIZATION_URI
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
......@@ -32,6 +36,18 @@ grantUriPermission(uri: string, flag: wantConstant.Flags, accessTokenId: number,
| targetBundleName | string | 是 | 被授权URI的应用包名 |
| callback | AsyncCallback&lt;number&gt; | 是 | callback形式返回检验结果,返回0表示有权限,返回-1表示无权限。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | -------- |
| 201 | Permissions denied. |
| 202 | Not System App. Interface caller is not a system app. |
| 401 | The parameter check failed. |
| 16500050 | Internal error. |
| 16500058 | Invalid URI flag. |
| 16500059 | Invalid URI type. |
| 16500060 | Sandbox application can not grant URI permission. |
**示例:**
```js
......@@ -46,12 +62,16 @@ grantUriPermission(uri: string, flag: wantConstant.Flags, accessTokenId: number,
## uriPermissionManager.grantUriPermission
grantUriPermission(uri: string, flag: wantConstant.Flags, accessTokenId: number): Promise&lt;number&gt;
grantUriPermission(uri: string, flag: wantConstant.Flags, targetBundleName: string): Promise&lt;number&gt;
授权URI给指定应用,通过返回值返回结果。
**系统API**:该接口为系统接口,三方应用不支持调用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
**需要权限:** ohos.permission.PROXY_AUTHORIZATION_URI
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
......@@ -66,13 +86,25 @@ grantUriPermission(uri: string, flag: wantConstant.Flags, accessTokenId: number)
| -------- | -------- |
| Promise&lt;number&gt; | 返回0表示有权限,返回-1表示无权限。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | -------- |
| 201 | Permissions denied. |
| 202 | Not System App. Interface caller is not a system app. |
| 401 | The parameter check failed. |
| 16500050 | Internal error. |
| 16500058 | Invalid URI flag. |
| 16500059 | Invalid URI type. |
| 16500060 | Sandbox application can not grant URI permission. |
**示例:**
```js
import WantConstant from '@ohos.ability.wantConstant';
let targetBundleName = 'com.example.test_case1'
let uri = "fileshare:///com.samples.filesharetest.FileShare/person/10"
uriPermissionManager.grantUriPermission(uri, wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION, targetBundleName)
uriPermissionManager.grantUriPermission(uri, WantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION, targetBundleName)
.then((data) => {
console.log('Verification succeeded.' + data)
}).catch((error) => {
......@@ -81,12 +113,16 @@ grantUriPermission(uri: string, flag: wantConstant.Flags, accessTokenId: number)
```
## uriPermissionManager.revokeUriPermission
revokeUriPermission(uri: string, accessTokenId: number, callback: AsyncCallback&lt;number&gt;): void
revokeUriPermission(uri: string, targetBundleName: string, callback: AsyncCallback&lt;number&gt;): void;
撤销授权指定应用的URI,通过callback返回结果。
**系统API**:该接口为系统接口,三方应用不支持调用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
**需要权限:** ohos.permission.PROXY_AUTHORIZATION_URI
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
......@@ -95,13 +131,22 @@ revokeUriPermission(uri: string, accessTokenId: number, callback: AsyncCallback&
| targetBundleName | string | 是 | 被撤销授权uri的应用包名 |
| callback | AsyncCallback&lt;number&gt; | 是 | callback形式返回检验结果,返回0表示有权限,返回-1表示无权限。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | -------- |
| 201 | Permissions denied. |
| 202 | Not System App. Interface caller is not a system app. |
| 401 | The parameter check failed. |
| 16500059 | Invalid URI type. |
**示例:**
```js
import WantConstant from '@ohos.ability.wantConstant';
let targetBundleName = 'com.example.test_case1'
let URI = "fileshare:///com.samples.filesharetest.FileShare/person/10"
uriPermissionManager.revokeUriPermission(uri, targetBundleName, (result) => {
uriPermissionManager.revokeUriPermission(URI, targetBundleName, (result) => {
console.log("result.code = " + result.code)
})
```
......@@ -109,12 +154,17 @@ revokeUriPermission(uri: string, accessTokenId: number, callback: AsyncCallback&
## uriPermissionManager.revokeUriPermission
revokeUriPermission(uri: string, flag: wantConstant.Flags, accessTokenId: number): Promise&lt;number&gt;
revokeUriPermission(uri: string, targetBundleName: string): Promise&lt;number&gt;
撤销授权指定应用的URI,通过返回值返回结果。
**系统API**:该接口为系统接口,三方应用不支持调用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
**需要权限:** ohos.permission.PROXY_AUTHORIZATION_URI
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
......@@ -128,6 +178,15 @@ revokeUriPermission(uri: string, flag: wantConstant.Flags, accessTokenId: number
| -------- | -------- |
| Promise&lt;number&gt; | 返回0表示有权限,返回-1表示无权限。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | -------- |
| 201 | Permissions denied. |
| 202 | Not System App. Interface caller is not a system app. |
| 401 | The parameter check failed. |
| 16500059 | Invalid URI type. |
**示例:**
```js
......
......@@ -200,6 +200,7 @@ struct GridExample {
.width('90%')
.backgroundColor(0xFAEEE0)
.height(300)
.scrollBar(BarState.Off)
Button('next page')
.onClick(() => { // 点击后滑到下一页
this.scroller.scrollPage({ next: true })
......
......@@ -41,8 +41,8 @@ List(value?:{space?: number&nbsp;|&nbsp;string, initialIndex?: number, scroller?
| 参数名 | 参数类型 | 必填 | 参数描述 |
| ------------ | ---------------------------------------- | ---- | ---------------------------------------- |
| space | number&nbsp;\|&nbsp;string | 否 | 子组件主轴方向的间隔。<br/>默认值:0<br/>**说明:** <br/>设置为除-1外其他负数或百分比时,按默认值显示。<br/>space参数值小于List分割线宽度时,子组件主轴方向的间隔取分割线宽度。 |
| initialIndex | number | 否 | 设置当前List初次加载时视口起始位置显示的item的索引值。<br/>默认值:0<br/>**说明:** <br/>设置为除-1外其他负数或超过了当前List最后一个item的索引值时视为无效取值,无效取值按默认值显示。 |
| space | number&nbsp;\|&nbsp;string | 否 | 子组件主轴方向的间隔。<br/>默认值:0<br/>**说明:** <br/>设置为负数时,按默认值显示。<br/>space参数值小于List分割线宽度时,子组件主轴方向的间隔取分割线宽度。 |
| initialIndex | number | 否 | 设置当前List初次加载时视口起始位置显示的item的索引值。<br/>默认值:0<br/>**说明:** <br/>设置为负数或超过了当前List最后一个item的索引值时视为无效取值,无效取值按默认值显示。 |
| scroller | [Scroller](ts-container-scroll.md#scroller) | 否 | 可滚动组件的控制器。用于与可滚动组件进行绑定。<br/>**说明:** <br/>不允许和其他滚动类组件绑定同一个滚动控制对象。 |
## 属性
......@@ -181,6 +181,7 @@ struct ListExample {
}, item => item)
}
.listDirection(Axis.Vertical) // 排列方向
.scrollBar(BarState.Off)
.divider({ strokeWidth: 2, color: 0xFFFFFF, startMargin: 20, endMargin: 20 }) // 每行之间的分界线
.edgeEffect(EdgeEffect.Spring) // 滑动到边缘无效果
.onScrollIndex((firstIndex: number, lastIndex: number) => {
......@@ -231,6 +232,7 @@ struct ListLanesExample {
.border({ width: 3, color: Color.Red })
.lanes({ minLength: 40, maxLength: 40 })
.alignListItem(this.alignListItem)
.scrollBar(BarState.Off)
Button("点击更改alignListItem:" + this.alignListItem).onClick(() => {
if (this.alignListItem == ListItemAlign.Start) {
......@@ -289,6 +291,7 @@ struct ListExample{
}
}, item => item)
}.width('90%')
.scrollBar(BarState.Off)
}.width('100%')
Button('edit list')
......
......@@ -118,6 +118,7 @@ struct ListItemExample {
}
}, item => item)
}.width('90%')
.scrollBar(BarState.Off)
}.width('100%').height('100%').backgroundColor(0xDCDCDC).padding({ top: 5 })
}
}
......@@ -125,54 +126,6 @@ struct ListItemExample {
![zh-cn_image_0000001219864159](figures/zh-cn_image_0000001219864159.gif)
```ts
// xxx.ets
@Entry
@Component
struct ListItemExample2 {
@State message: string = 'Hello World'
@Builder itemEnd() {
Row () {
Button("Del").margin("4vp")
Button("Set").margin("4vp")
}.padding("4vp").justifyContent(FlexAlign.SpaceEvenly)
}
build() {
Column() {
List({space:10}) {
ListItem() {
Text(this.message)
.width('100%')
.height(100)
.fontSize(16)
.textAlign(TextAlign.Center)
.borderRadius(10)
.backgroundColor(0xFFFFFF)
}
.swipeAction({ end:this.itemEnd})
ListItem() {
Text(this.message)
.width('100%')
.height(100)
.fontSize(16)
.textAlign(TextAlign.Center)
.borderRadius(10)
.backgroundColor(0xFFFFFF)
}
.swipeAction({ start:this.itemEnd})
}
}
.padding(10)
.backgroundColor(0xDCDCDC)
.width('100%')
.height('100%')
}
}
```
![zh-cn_image_1501929990650](figures/zh-cn_image_1501929990650.jpg)
```ts
// xxx.ets
......
......@@ -107,12 +107,12 @@ struct ListItemGroupExample {
}
}, item => item)
}
.borderRadius(20)
.divider({ strokeWidth: 1, color: Color.Blue }) // 每行之间的分界线
})
}
.width('90%')
.sticky(StickyStyle.Header|StickyStyle.Footer)
.scrollBar(BarState.Off)
}.width('100%').height('100%').backgroundColor(0xDCDCDC).padding({ top: 5 })
}
}
......
......@@ -48,7 +48,7 @@ Swiper(controller?: SwiperController)
| indicatorStyle<sup>(deprecated)</sup> | {<br/>left?:&nbsp;[Length](ts-types.md#length),<br/>top?:&nbsp;[Length](ts-types.md#length),<br/>right?:&nbsp;[Length](ts-types.md#length),<br/>bottom?:&nbsp;[Length](ts-types.md#length),<br/>size?:&nbsp;[Length](ts-types.md#length),<br/>mask?:&nbsp;boolean,<br/>color?:&nbsp;[ResourceColor](ts-types.md),<br/>selectedColor?:&nbsp;[ResourceColor](ts-types.md)<br/>} | 设置导航点样式:<br/>\- left: 设置导航点距离Swiper组件左边的距离。<br/>\- top: 设置导航点距离Swiper组件顶部的距离。<br/>\- right: 设置导航点距离Swiper组件右边的距离。<br/>\- bottom: 设置导航点距离Swiper组件底部的距离。<br/>\- size: 设置导航点的直径,不支持设置百分比。默认值:6vp。<br/>\- mask: 设置是否显示导航点蒙层样式。<br/>\- color: 设置导航点的颜色。<br/>\- selectedColor: 设置选中的导航点的颜色。 <br/>从API version 8开始支持,从API version 10开始不再维护,建议使用[indicator](#indicator10对象说明)代替。|
| displayCount<sup>8+</sup> | number\|string | 设置一页内元素显示个数。<br/>默认值:1<br/>**说明:** <br/>字符串类型仅支持设置为'auto',显示效果同SwiperDisplayMode.AutoLinear。<br/>使用number类型时,子组件按照主轴均分Swiper宽度(减去displayCount-1的itemSpace)的方式进行主轴拉伸(收缩)布局。 |
| effectMode<sup>8+</sup> | [EdgeEffect](ts-appendix-enums.md#edgeeffect) | 滑动效果,目前支持的滑动效果参见EdgeEffect的枚举说明。<br/>默认值:EdgeEffect.Spring<br/>**说明:** <br/>控制器接口调用时不生效回弹。 |
| displayArrow<sup>10+</sup> | value:[ArrowStyle](#arrowstyle10对象说明) \| boolean,<br/>isHoverShow?: boolean | 设置导航点箭头样式。<br/>默认值:false<br/>isHoverShow:鼠标悬停时显示箭头。 <br/>默认值:false|
| displayArrow<sup>10+</sup> | value:[ArrowStyle](#arrowstyle10对象说明) \| boolean,<br/>isHoverShow?: boolean | 设置导航点箭头样式。<br/>-value: 支持设置箭头和底板样式,异常场景使用ArrowStyle对象中的默认值。<br/>\-isHoverShow:设置鼠标悬停时是否显示箭头。<br/>默认值:false<br/>**说明:**<br/>isHoverShow为false时,常驻显示箭头,支持点击翻页。<br/>isHoverShow为true时,只有在鼠标悬停时才会显示箭头,并支持点击翻页。 |
## SwiperDisplayMode枚举说明
......@@ -129,10 +129,10 @@ finishAnimation(callback?: () => void): void
| 参数名 | 参数类型 | 必填项 | 参数描述 |
| ------------- | -------- | ------ | -------- |
| isShowBackground | boolean | 否 | 设置箭头底板是否显示。<br/>默认值:false |
| isSidebarMiddle | boolean | 否 | 设置箭头是否在内容区两侧居中显示。<br/>默认值:false,默认显示在导航点指示器两侧。|
| backgroundSize | [Length](ts-types.md#length) | 否 | 设置底板大小。<br/>默认值:24vp |
| backgroundColor | [ResourceColor](ts-types.md#resourcecolor) | 否 | 设置底板颜色。<br/>默认值:\#19182431 |
| arrowSize | [Length](ts-types.md#length) | 否 | 设置箭头大小。<br/>默认值:18vp |
| isSidebarMiddle | boolean | 否 | 设置箭头显示位置。<br/>默认值:false <br/>默认显示在导航点指示器两侧。|
| backgroundSize | [Length](ts-types.md#length) | 否 | 设置底板大小。<br/>在导航点两侧显示:<br/>默认值:24vp<br/>在组件两侧显示:<br/>默认值:32vp<br/>不支持设置百分比。 |
| backgroundColor | [ResourceColor](ts-types.md#resourcecolor) | 否 | 设置底板颜色。<br/>在导航点两侧显示:<br/>默认值:\#19182431<br/>在组件两侧显示:<br/>默认值:\#00000000 |
| arrowSize | [Length](ts-types.md#length) | 否 | 设置箭头大小。<br/>在导航点两侧显示时:<br/>默认值:18vp<br/>在组件两侧显示时:<br/>默认值:24vp<br/>**说明:**<br/>isShowBackground为true时,arrowSize为backgroundSize的3/4。<br/>不支持设置百分比。 |
| arrowColor | [ResourceColor](ts-types.md#resourcecolor) | 否 | 设置箭头颜色。<br/>默认值:\#182431 |
......
......@@ -23,7 +23,7 @@ HiLog模块实现日志打印功能。
| 文件名称 | 描述 |
| -------- | -------- |
| [log.h](log_8h.md) | HiLog模块日志接口定义,通过这些接口实现日志打印相关功能。<br>引用文件:<hilog/log.h> |
| [log.h](log_8h.md) | HiLog模块日志接口定义,通过这些接口实现日志打印相关功能。<br>**引用文件**<hilog/log.h> <br>**库**:libhitrace_ndk.z.so |
### 宏定义
......
......@@ -340,8 +340,8 @@ OffscreenCanvasRenderingContext2D对象和CanvasRenderingContext2D对象提供
![2023032422159](figures/2023032422159.jpg)
## 相关实例
## 相关实例
使用画布绘制自定义图形,有以下相关实例可供参考:
使用画布绘制自定义图形,有以下相关实例可供参考:
- [Lottie动画](https://gitee.com/openharmony/applications_app_samples/tree/master/code/Solutions/Game/Lottie)
\ No newline at end of file
- [Lottie动画](https://gitee.com/openharmony/applications_app_samples/tree/master/code/Solutions/Game/Lottie)
\ No newline at end of file
# OpenHarmony 3.2.2 Release
## 版本概述
当前版本在OpenHarmony 3.2.1 Release的基础上,修复了内存泄漏及linux kernel等开源组件的安全漏洞,增强了系统安全性。修复了部分系统稳定性的issue,增强了系统稳定性。更新配套的SDK版本。
## 配套关系
**表1** 版本软件和工具配套关系
| 软件 | 版本 | 备注 |
| --------------------------------- | ------------------------------------------------ | ------------------------------------------------------------ |
| OpenHarmony | 3.2.2 Release | NA |
| Public SDK | Ohos_sdk_public 3.2.13.5 (API Version 9 Release) | 面向应用开发者提供,不包含需要使用系统权限的系统接口。通过DevEco Studio默认获取的SDK为Public SDK。 |
| HUAWEI DevEco Studio(可选) | 3.1 Release | OpenHarmony应用开发推荐使用。<br />[点击此处获取](https://developer.harmonyos.com/cn/develop/deveco-studio#download) |
| HUAWEI DevEco Device Tool(可选) | 3.1 Release | OpenHarmony智能设备集成开发环境推荐使用。<br />[点击此处获取](https://device.harmonyos.com/cn/develop/ide/) |
## 源码获取
### 前提条件
1. 注册码云gitee帐号。
2. 注册码云SSH公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191)
3. 安装[git客户端](https://gitee.com/link?target=https%3A%2F%2Fgit-scm.com%2Fbook%2Fzh%2Fv2%2F%25E8%25B5%25B7%25E6%25AD%25A5-%25E5%25AE%2589%25E8%25A3%2585-Git)[git-lfs](https://gitee.com/vcs-all-in-one/git-lfs?_from=gitee_search#downloading)并配置用户信息。
```
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store
```
4. 安装码云repo工具,可以执行如下命令。
```
curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo #如果没有权限,可下载至其他目录,并将其配置到环境变量中chmod a+x /usr/local/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
```
### 通过repo获取
**方式一(推荐)**
通过repo + ssh 下载(需注册公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191))。
```
repo init -u git@gitee.com:openharmony/manifest.git -b refs/tags/OpenHarmony-v3.2.2-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
**方式二**
通过repo + https 下载。
从版本发布Tag节点获取源码。可获取与版本发布时完全一致的源码。
```
repo init -u https://gitee.com/openharmony/manifest -b refs/tags/OpenHarmony-v3.2.2-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
### 从镜像站点获取
**表2** 获取源码路径
| 版本源码 | **版本信息** | **下载站点** | **SHA256校验码** |
| ------------------------------------- | ------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 全量代码(标准、轻量和小型系统) | 3.2.2 Release | [站点](https://mirrors.huaweicloud.com/openharmony/os/3.2.2/code-v3.2.2-Release.tar.gz) | [SHA256校验码](https://mirrors.huaweicloud.com/openharmony/os/3.2.2/code-v3.2.2-Release.tar.gz.sha256) |
| Hi3861解决方案(二进制) | 3.2.2 Release | [站点](https://mirrors.huaweicloud.com/openharmony/os/3.2.2/hispark_pegasus.tar.gz) | [SHA256校验码](https://mirrors.huaweicloud.com/openharmony/os/3.2.2/hispark_pegasus.tar.gz.sha256) |
| Hi3516解决方案-LiteOS(二进制) | 3.2.2 Release | [站点](https://mirrors.huaweicloud.com/openharmony/os/3.2.2/hispark_taurus_LiteOS.tar.gz) | [SHA256校验码](https://mirrors.huaweicloud.com/openharmony/os/3.2.2/hispark_taurus_LiteOS.tar.gz.sha256) |
| Hi3516解决方案-Linux(二进制) | 3.2.2 Release | [站点](https://mirrors.huaweicloud.com/openharmony/os/3.2.2/hispark_taurus_Linux.tar.gz) | [SHA256校验码](https://mirrors.huaweicloud.com/openharmony/os/3.2.2/hispark_taurus_Linux.tar.gz.sha256) |
| RK3568标准系统解决方案(二进制) | 3.2.2 Release | [站点](https://mirrors.huaweicloud.com/openharmony/os/3.2.2/dayu200_standard_arm32.tar.gz) | [SHA256校验码](https://mirrors.huaweicloud.com/openharmony/os/3.2.2/dayu200_standard_arm32.tar.gz.sha256) |
| 标准系统Public SDK包(Mac) | 3.2.13.5 | [站点](https://mirrors.huaweicloud.com/openharmony/os/3.2.2/ohos-sdk-mac-public.tar.gz) | [SHA256校验码](https://mirrors.huaweicloud.com/openharmony/os/3.2.2/ohos-sdk-mac-public.tar.gz.sha256) |
| 标准系统Public SDK包(Mac-M1) | 3.2.13.5 | [站点](https://mirrors.huaweicloud.com/openharmony/os/3.2.2/L2-SDK-MAC-M1-PUBLIC.tar.gz) | [SHA256校验码](https://mirrors.huaweicloud.com/openharmony/os/3.2.2/L2-SDK-MAC-M1-PUBLIC.tar.gz.sha256) |
| 标准系统Public SDK包(Windows/Linux) | 3.2.13.5 | [站点](https://mirrors.huaweicloud.com/openharmony/os/3.2.2/ohos-sdk-windows_linux-public.tar.gz) | [SHA256校验码](https://mirrors.huaweicloud.com/openharmony/os/3.2.2/ohos-sdk-windows_linux-public.tar.gz.sha256) |
## 更新说明
### API
3.2.2 Release对比3.2.1 Release API接口无变更。
### 芯片及开发板适配
芯片及开发板适配状态请参考[SIG-Devboard](https://gitee.com/openharmony/community/blob/master/sig/sig_devboard/sig_devboard_cn.md)信息。
## 修复缺陷issue列表
**表3** 修复缺陷issue列表
| ISSUE | 问题描述 |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
| [I70T6E](https://gitee.com/openharmony/web_webview/issues/I70T6E) | 【OpenHarmony 3.2.12.2】【RK3568】【压力测试】【ToC】【低概率1/10】【wukong】出现1次 由进程com.ohos.note下的Chrome_IOThread线程导致libweb_engine.so出现cppcrash |
| [I76JRL](https://gitee.com/openharmony/drivers_peripheral/issues/I76JRL) | 【OpenHarmony 3.2.11.9】【RK3568】【压力测试】【ToC】【低概率1/10】【wukong】出现1次,camera_host进程下offlinepipeline发生cppcrash,信息为libcamera_pipeline_core.z.so。 |
| [I7C0LX](https://gitee.com/openharmony/developtools_profiler/issues/I7C0LX) | 【OpenHarmony 3.2.13.1】【RK3568】【压力测试】【ToC】【高概率6/10】【wukong】出现650次,com.ohos.smartperf应用出现jscrash,内容信息为initDb。 |
| [I7C0SA](https://gitee.com/openharmony/vendor_hihope/issues/I7C0SA) | 【OpenHarmony 3.2.13.1】【RK3568】【压力测试】【ToC】【高概率】【wukong】出现27次 由进程com.ohos.systemui下的RSRenderThread线程导致libmali-bifrost-g52-g2p0-ohos.so出现cppcrash |
| [I7C10M](https://gitee.com/openharmony/security_privacy_center/issues/I7C10M) | 【OpenHarmony 3.2.13.1】【RK3568】【压力测试】【ToC】【高概率6/10】【wukong】出现39次,com.ohos.certmanager出现jscrash,内容信息为saveAllMaps。 |
| [I7CA2W](https://gitee.com/openharmony/multimedia_medialibrary_standard/issues/I7CA2W) | 【OpenHarmony 3.2.13.1】【RK3568】【压力测试】【ToC】【高概率】【wukong】出现358次, 由进程com.ohos.medialibrary.medialibrarydata下com.ohos.medial线程出现cppcrash,崩溃栈显示为libmedialibrary_data_extension.z.so |
| [I7CA7A](https://gitee.com/openharmony/distributeddatamgr_relational_store/issues/I7CA7A) | 【OpenHarmony 3.2.13.1】【RK3568】【压力测试】【ToC】【高概率 8/10】【wukong】出现1131次,由进程com.ohos.contactsdataability下的IPC_2_4692线程导致librdb_data_share_adapter.z.so出现cppcrash |
| [I7CBLV](https://gitee.com/openharmony/bundlemanager_bundle_framework/issues/I7CBLV) | 【OpenHarmony 3.2.13.1】【RK3568】【压力测试】【ToC】【高概率】【wukong】出现1249次,com.ohos.note下出现jscrash问题,栈名:getFolderText与createRdbStore |
| [I7CBWQ](https://gitee.com/openharmony/applications_mms/issues/I7CBWQ) | 【OpenHarmony 3.2.13.1】【RK3568】【压力测试】【ToC】【低概率】【wukong】出现6次关键应用: com.ohos.mms由于STRINGID:APPLICATION_BLOCK_INPUT卡在libeventhandler.z.so |
| [I7CWA0](https://gitee.com/openharmony/communication_ipc/issues/I7CWA0) | 【OpenHarmony 3.2.13.1】【RK3568】【压力测试】【ToC】【低概率】【wukong】出现1次 由关键进程com.ohos.contacts下的IPC_3_17363线程导致libipc_core.z.so出现cppcrash |
| [I7CYM3](https://gitee.com/openharmony/applications_camera/issues/I7CYM3) | 【OpenHarmony 3.2.13.1】【RK3568】【压力测试】【ToC】【高概率8/10】【wukong】出现1800次,com.ohos.camer出现jscrash问题,栈名:getInstance |
## 修复安全issue列表
**表4** 修复安全issue列表
| ISSUE | 问题描述 |
| ------------------------------------------------------------ | --------------------------------------------------- |
| I6QYVO | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2021-3923 |
| I6QYVZ | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-28772 |
| I6QYWE | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-1281 |
| I6RAW6 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-0590 |
| I6UW4T | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-29156 |
| I6UW51 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-2978 |
| I6UW52 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-3176 |
| I6UW55 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-45934 |
| I6UW56 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-47521 |
| I6VUAY | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2004 |
| I6XC4Y | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2162 |
| I6ZM02 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-0179 |
| I70CNH | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2459 |
| I70SLA | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-1078 |
| I722JK | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-0326 |
| I722JP | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-0240 |
| I722K2 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-42915 |
| I722K4 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-42916 |
| I722K6 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-32207 |
| I722K8 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-32221 |
| I722UD | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-32206 |
| I722UL | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-25313 |
| I722UN | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-25314 |
| I722UP | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-25315 |
| I722UV | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-25235 |
| I722V1 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-25236 |
| I722V6 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-23990 |
| I722VB | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-23852 |
| I722VJ | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2021-45960 |
| I722VL | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2021-46143 |
| I722VN | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-22822 |
| I722VP | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-22824 |
| I722VR | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-22823 |
| I722VU | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-22827 |
| I722WC | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-22825 |
| I722WM | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-22826 |
| I722WV | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2021-39275 |
| I722X0 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2021-36160 |
| I722X4 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2021-33193 |
| I722XQ | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-21538 |
| I72RUE | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-47518 |
| I72SDD | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-3545 |
| I72SDF | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-4696 |
| I72SKQ | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-47519 |
| I73C2J | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2513 |
| I73C2O | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-28893 |
| I73MW6 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-23222 |
| I73MWI | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-32250 |
| I73MWQ | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-34918 |
| I73MX2 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-36946 |
| I73PF6 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2726 |
| I749IX | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2721 |
| I74HC1 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-28320 |
| I74HCG | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-28322 |
| I74HD3 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-28321 |
| I76NLQ | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2724 |
| I76NLT | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2722 |
| I77U26 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2021-43389 |
| I77XID | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-25375 |
| I78I9U | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-2588 |
| I78R59 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-3635 |
| I78R5B | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2022-3649 |
| I79CK8 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2021-3600 |
| I79LH8 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2650 |
| I79NDI | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2936 |
| I79NEF | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2937 |
| I7A1M8 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-3006 |
| I7AJ6J | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2935 |
| I7AJ6M | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2933 |
| I7AJ6P | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2931 |
| I7AJ6S | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2932 |
| I7AJ6W | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2929 |
| I7AJHL | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2940 |
| I7AJHO | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2941 |
| I7AJHR | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2938 |
| I7AJHU | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2939 |
| I7AJHX | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2930 |
| I7AJI0 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-2934 |
| I7B049 | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-32643 |
| I7B04Z | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-32636 |
| I7B05A | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-32611 |
| I7B05I | 【漏洞】 【OpenHarmony-3.2-Release】 CVE-2023-32665 |
## 遗留缺陷列表
**表5** 遗留缺陷列表
| ISSUE | 问题描述 | 影响 | 计划解决日期 |
| ----- | -------- | ---- | ------------ |
| I6SXBI | 【OpenHarmony 3.2.11.6】【RK3568】【压力测试】【ToC】【低概率】【wukong】出现由进程ohos.samples.distributedcalc下的libdistributeddata.z.so cppcrash | 计算器应用快速启动和退出场景,启动后1秒内退出,导致JS对象读取数据库成功前JS对象被析构,只有LOG报错但用户无感知,对2C无影响 | 2023年7月15日 |
| I6TRE6 | 进程com.ohos.contacts下的com.ohos.contacts线程导致libdatashare_consumer.z.so低概率出现crash。 | 联系人应用快速启动和退出场景,发现在启动后600ms内退出,联系人进程低概率出现crash,出现crash后联系人进程会被重新拉起,影响可控。 | 2023年7月15日 |
| I72P5E | 反复进入大图浏览界面后返回,导致libace.z.so出现内存泄露 | 从图库进入大图浏览界面后返回,ArkUI模块每次泄露10kb,应用点返回后,内存回收 | 2023年7月15日 |
| I72P5I | 反复进入某相册的图片宫格浏览界面,导致libace.z.so出现内存泄露 | 进入某相册的图片宫格浏览界面后返回,ArkUI每次泄露19kb,应用点返回后,内存回收 | 2023年7月15日 |
| I76N0Y | 反复在dock栏添加/移除应用,导致libace.z.so出现内存泄露 | 移动卡片到合法区域,ArkUI每次泄露99kb,非常用场景,应用重启内存回收。 | 2023年7月15日 |
| I6XHE7 | NAPIRemoteObject模块内存泄露 | JS应用需要IPC需要建立NAPIRemoteObject对象进程通信,创建一次可以循环使用,建立一次后泄露1.2kb,应用不需要反复创建新对象,泄露量可控,应用进程退出会释放掉 | 2023年7月15日 |
| I7D4CH | 【OpenHarmony】【体验测试】【版本号:3.2.13.1】【rk3568】【ToC】【概率:必现】首次启动短信息完成时延2300ms,实际值2537ms,超基线237ms | 版本为了合入I7CBSM稳定性问题,修改rdb数据锁保护范围,导致联系人加载耗时增加,平均劣化约9%,影响可控,跟踪在后续版本优化。 | 2023年7月15日 |
# security子系统ChangeLog
## cl.security.1 对API9中已经抛出的异常,补写throws标签
对于在API9中已经抛出异常而JS DOC中漏写throws标签的接口,在since 9的注释中补上throws标签。
**变更影响**
对于已发布的JS接口,可能影响异常处理流程,包括同步异常和异步异常。应用需要根据最新的throws标签,排查是否有遗漏的异常处理流程,结合实际情况进行适配。
**关键的接口/组件变更**
修改前的接口原型:
```ts
interface Key {
/**
* Encode the key object to binary data.
*
* @returns { DataBlob } the binary data of the key object.
* @syscap SystemCapability.Security.CryptoFramework
* @since 9
*/
getEncoded(): DataBlob;
}
interface AsyKeyGenerator {
/**
* Used to generate asymmetric key pair.
*
* @param { AsyncCallback<KeyPair> } callback - the callback used to return keypair.
* @throws { BusinessError } 401 - invalid parameters.
* @throws { BusinessError } 17620001 - memory error.
* @syscap SystemCapability.Security.CryptoFramework
* @since 9
*/
generateKeyPair(callback: AsyncCallback<KeyPair>): void;
/**
* Used to generate asymmetric key pair.
*
* @returns { Promise<KeyPair> } the promise used to return keypair.
* @throws { BusinessError } 401 - invalid parameters.
* @throws { BusinessError } 17620001 - memory error.
* @syscap SystemCapability.Security.CryptoFramework
* @since 9
*/
generateKeyPair(): Promise<KeyPair>;
/**
* Used to convert asymmetric key data to key pair object.
*
* @param { DataBlob } pubKey - the public key data blob.
* @param { DataBlob } priKey - the private key data blob.
* @param { AsyncCallback<KeyPair> } callback - the callback used to return keypair.
* @throws { BusinessError } 401 - invalid parameters.
* @throws { BusinessError } 17620001 - memory error.
* @syscap SystemCapability.Security.CryptoFramework
* @since 9
*/
convertKey(pubKey: DataBlob, priKey: DataBlob, callback: AsyncCallback<KeyPair>): void;
/**
* Used to convert asymmetric key data to key pair object.
*
* @param { DataBlob } pubKey - the public key data blob.
* @param { DataBlob } priKey - the private key data blob.
* @returns { Promise<KeyPair> } the promise used to return keypair.
* @throws { BusinessError } 401 - invalid parameters.
* @throws { BusinessError } 17620001 - memory error.
* @syscap SystemCapability.Security.CryptoFramework
* @since 9
*/
convertKey(pubKey: DataBlob, priKey: DataBlob): Promise<KeyPair>;
}
/**
* Provides the asymmetric key generator instance func.
*
* @param { string } algName - indicates the algorithm name.
* @returns { AsyKeyGenerator } the generator obj create by algName.
* @throws { BusinessError } 401 - invalid parameters.
* @syscap SystemCapability.Security.CryptoFramework
* @since 9
*/
function createAsyKeyGenerator(algName: string): AsyKeyGenerator;
/**
* Create a cipher object for encryption and decryption operations according to the given specifications.
* Two different Cipher objects should be created when using RSA encryption and decryption,
* even with the same specifications.
*
* @param { string } transformation - indicates the description to be transformed to cipher specifications.
* @returns { Cipher } the cipher object returned by the function.
* @throws { BusinessError } 401 - invalid parameters.
* @throws { BusinessError } 801 - this operation is not supported.
* @syscap SystemCapability.Security.CryptoFramework
* @since 9
*/
function createCipher(transformation: string): Cipher;
/**
* Create sign class.
*
* @param { string } algName - indicates the algorithm name and params.
* @returns { Sign } the sign class.
* @throws { BusinessError } 401 - invalid parameters.
* @syscap SystemCapability.Security.CryptoFramework
* @since 9
*/
function createSign(algName: string): Sign;
/**
* Create verify class.
*
* @param { string } algName - indicates the algorithm name and params.
* @returns { Verify } the verify class.
* @throws { BusinessError } 401 - invalid parameters.
* @syscap SystemCapability.Security.CryptoFramework
* @since 9
*/
function createVerify(algName: string): Verify;
/**
* Create key agreement class.
*
* @param { string } algName - indicates the algorithm name and params.
* @returns { KeyAgreement } the key agreement class.
* @throws { BusinessError } 401 - invalid parameters.
* @syscap SystemCapability.Security.CryptoFramework
* @since 9
*/
function createKeyAgreement(algName: string): KeyAgreement;
```
修改后的接口原型:
```ts
interface Key {
/**
* Encode the key object to binary data.
*
* @returns { DataBlob } the binary data of the key object.
* @throws { BusinessError } 801 - this operation is not supported.
* @throws { BusinessError } 17620001 - memory error.
* @throws { BusinessError } 17630001 - crypto operation error.
* @syscap SystemCapability.Security.CryptoFramework
* @since 9
*/
getEncoded(): DataBlob;
}
interface AsyKeyGenerator {
/**
* Used to generate asymmetric keypair.
*
* @param { AsyncCallback<KeyPair> } callback - the callback used to return keypair.
* @throws { BusinessError } 401 - invalid parameters.
* @throws { BusinessError } 17620001 - memory error.
* @throws { BusinessError } 17630001 - crypto operation error.
* @syscap SystemCapability.Security.CryptoFramework
* @since 9
*/
generateKeyPair(callback: AsyncCallback<KeyPair>): void;
/**
* Used to generate asymmetric keypair.
*
* @returns { Promise<KeyPair> } the promise used to return keypair.
* @throws { BusinessError } 401 - invalid parameters.
* @throws { BusinessError } 17620001 - memory error.
* @throws { BusinessError } 17630001 - crypto operation error.
* @syscap SystemCapability.Security.CryptoFramework
* @since 9
*/
generateKeyPair(): Promise<KeyPair>;
/**
* Used to convert asymmetric key data to keypair object.
*
* @param { DataBlob } pubKey - the public key data blob.
* @param { DataBlob } priKey - the private key data blob.
* @param { AsyncCallback<KeyPair> } callback - the callback used to return keypair.
* @throws { BusinessError } 401 - invalid parameters.
* @throws { BusinessError } 17620001 - memory error.
* @throws { BusinessError } 17630001 - crypto operation error.
* @syscap SystemCapability.Security.CryptoFramework
* @since 9
*/
convertKey(pubKey: DataBlob, priKey: DataBlob, callback: AsyncCallback<KeyPair>): void;
/**
* Used to convert asymmetric key data to keypair object.
*
* @param { DataBlob } pubKey - the public key data blob.
* @param { DataBlob } priKey - the private key data blob.
* @returns { Promise<KeyPair> } the promise used to return keypair.
* @throws { BusinessError } 401 - invalid parameters.
* @throws { BusinessError } 17620001 - memory error.
* @throws { BusinessError } 17630001 - crypto operation error.
* @syscap SystemCapability.Security.CryptoFramework
* @since 9
*/
convertKey(pubKey: DataBlob, priKey: DataBlob): Promise<KeyPair>;
}
/**
* Create the asymmetric key generator instance according to the given algorithm name.
*
* @param { string } algName - indicates the algorithm name.
* @returns { AsyKeyGenerator } the asymmetric key generator instance.
* @throws { BusinessError } 401 - invalid parameters.
* @throws { BusinessError } 801 - this operation is not supported.
* @throws { BusinessError } 17620001 - memory error.
* @syscap SystemCapability.Security.CryptoFramework
* @since 9
*/
function createAsyKeyGenerator(algName: string): AsyKeyGenerator;
/**
* Create a cipher object for encryption and decryption operations according to the given specifications.
* Two different Cipher objects should be created when using RSA encryption and decryption,
* even with the same specifications.
*
* @param { string } transformation - indicates the description to be transformed to cipher specifications.
* @returns { Cipher } the cipher object returned by the function.
* @throws { BusinessError } 401 - invalid parameters.
* @throws { BusinessError } 801 - this operation is not supported.
* @throws { BusinessError } 17620001 - memory error.
* @syscap SystemCapability.Security.CryptoFramework
* @since 9
*/
function createCipher(transformation: string): Cipher;
/**
* Create a sign object for generating signatures.
*
* @param { string } algName - indicates the algorithm name and params.
* @returns { Sign } the sign class.
* @throws { BusinessError } 401 - invalid parameters.
* @throws { BusinessError } 801 - this operation is not supported.
* @throws { BusinessError } 17620001 - memory error.
* @syscap SystemCapability.Security.CryptoFramework
* @since 9
*/
function createSign(algName: string): Sign;
/**
* Create a verify object for verifying signatures.
*
* @param { string } algName - indicates the algorithm name and the parameters.
* @returns { Verify } the verify class.
* @throws { BusinessError } 401 - invalid parameters.
* @throws { BusinessError } 801 - this operation is not supported.
* @throws { BusinessError } 17620001 - memory error.
* @syscap SystemCapability.Security.CryptoFramework
* @since 9
*/
function createVerify(algName: string): Verify;
/**
* Create a key agreement object.
*
* @param { string } algName - indicates the algorithm name and params.
* @returns { KeyAgreement } the key agreement object.
* @throws { BusinessError } 401 - invalid parameters.
* @throws { BusinessError } 801 - this operation is not supported.
* @throws { BusinessError } 17620001 - memory error.
* @syscap SystemCapability.Security.CryptoFramework
* @since 9
*/
function createKeyAgreement(algName: string): KeyAgreement;
```
**适配指导**
由于漏标的throws异常发生在较少见的情况下,应用可以结合实际情况,排查漏标的throws标签是否需要专门适配。
- 对于同步方法,如createSign等,请使用try/catch方式处理错误信息。
- 对于异步方法,如convertKey等,请使用try/catch方式处理同步的参数错误,使用error对象的方式获取异步的参数错误和业务执行错误。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册