# @ohos.app.form.formObserver (formObserver)
formObserver模块提供了卡片监听方相关接口的能力,包括对同一用户下安装的卡片新增、删除、可见性变化事件的订阅和取消订阅,获取正在运行的卡片信息等。
> **说明:**
>
> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
> 本模块接口均为系统接口。
## 导入模块
```ts
import formObserver from '@ohos.app.form.formObserver';
```
## on('formAdd')
on(type: 'formAdd', observerCallback: Callback<formInfo.RunningFormInfo>): void
订阅卡片新增事件。使用callback异步回调,返回当前新增卡片的[RunningFormInfo](js-apis-app-form-formInfo.md)。
**需要权限**:ohos.permission.OBSERVE_FORM_RUNNING
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------- |
| type | string | 是 | 填写'formAdd',表示卡片新增事件。 |
| callback | Callback<formInfo.RunningFormInfo> | 是 | 回调函数。返回新增卡片的RunningFormInfo。 |
**示例:**
```ts
import formObserver from '@ohos.app.form.formObserver';
let callback = function(data) {
console.log('a new form added, data: ${JSON.stringify(data)');
}
formObserver.on('formAdd', callback);
```
## on('formAdd')
on(type: 'formAdd', hostBundleName: string, observerCallback: Callback<formInfo.RunningFormInfo>): void
订阅卡片新增事件。使用callback异步回调,返回指定卡片使用方应用新增卡片的[RunningFormInfo](js-apis-app-form-formInfo.md)。
**需要权限**:ohos.permission.OBSERVE_FORM_RUNNING
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------- |
| type | string | 是 | 填写'formAdd',表示卡片新增事件。 |
| bundleName | string | 是 | 指定订阅卡片使用方包的bundleName。缺省则订阅所有卡片使用方的卡片新增事件。 |
| callback | Callback<formInfo.RunningFormInfo> | 是 | 回调函数。返回新增卡片的RunningFormInfo。 |
**示例:**
```ts
import formObserver from '@ohos.app.form.formObserver';
let bundleName = 'ohos.samples.FormApplication';
let callback = function(data) {
console.log('a new form added, data: ${JSON.stringify(data)');
}
formObserver.on('formAdd', bundleName, callback);
```
## off('formAdd')
off(type: "formAdd", hostBundleName?: string, observerCallback?: Callback<formInfo.RunningFormInfo>): void
取消订阅卡片新增事件。使用callback异步回调,返回当前新增卡片的[RunningFormInfo](js-apis-app-form-formInfo.md)。
**需要权限**:ohos.permission.OBSERVE_FORM_RUNNING
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------- |
| type | string | 是 | 填写'formAdd',表示卡片新增事件。 |
| bundleName | string | 否 | 指定订阅卡片使用方包的bundleName。
填写该参数时,与注册时填写bundleName的on接口对应。
缺省则订阅所有卡片使用方的卡片删除事件,与注册时未填写bundleName的on接口相对应。 |
| callback | Callback<formInfo.RunningFormInfo> | 否 | 回调函数。返回卡片RunningFormInfo。缺省时,表示注销对应已注册事件回调。
需与对应on('formAdd')的callback一致。|
**示例:**
```ts
import formObserver from '@ohos.app.form.formObserver';
let bundleName = 'ohos.samples.FormApplication';
let callback = function(data) {
console.log('a new form added, data: ${JSON.stringify(data)');
}
formObserver.off('formAdd', callback);
formObserver.off('formAdd', bundleName, callback);
```
> **说明:**
> on('formAdd', callback)与off('formAdd', callback)相对应;
> on('formAdd', bundleName, callback)与off('formAdd', bundleName, callback)相对应;
> 订阅(on)只能由自己对应的取消订阅接口(off)取消。
## on('formRemove')
on(type: 'formRemove', observerCallback: Callback<formInfo.RunningFormInfo>): void
订阅卡片删除事件。使用callback异步回调,返回当前删除卡片的[RunningFormInfo](js-apis-app-form-formInfo.md)。
**需要权限**:ohos.permission.OBSERVE_FORM_RUNNING
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------- |
| type | string | 是 | 填写'formRemove',表示卡片删除事件。 |
| callback | Callback<formInfo.RunningFormInfo> | 是 | 回调函数。返回删除卡片的RunningFormInfo。 |
**示例:**
```ts
import formObserver from '@ohos.app.form.formObserver';
let callback = function(data) {
console.log('form deleted, data: ${JSON.stringify(data)');
}
formObserver.on('formRemove', callback);
```
## on('formRemove')
on(type: 'formRemove', hostBundleName: string, observerCallback: Callback<formInfo.RunningFormInfo>): void
订阅卡片删除事件。使用callback异步回调,返回指定卡片使用方应用被删除卡片的[RunningFormInfo](js-apis-app-form-formInfo.md)。
**需要权限**:ohos.permission.OBSERVE_FORM_RUNNING
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------- |
| type | string | 是 | 填写'formRemove',表示卡片删除事件。 |
| bundleName | string | 是 | 指定订阅卡片使用方包的bundleName。缺省则订阅所有卡片使用方的卡片删除事件。 |
| callback | Callback<formInfo.RunningFormInfo> | 是 | 回调函数。返回删除卡片的RunningFormInfo。 |
**示例:**
```ts
import formObserver from '@ohos.app.form.formObserver';
let bundleName = 'ohos.samples.FormApplication';
let callback = function(data) {
console.log('form deleted, data: ${JSON.stringify(data)');
}
formObserver.on('formRemove', bundleName, callback);
```
## off('formRemove')
off(type: "formRemove", hostBundleName?: string, observerCallback?: Callback<formInfo.RunningFormInfo>): void
取消订阅卡片删除事件。使用callback异步回调,返回当前删除卡片的[RunningFormInfo](js-apis-app-form-formInfo.md)。
**需要权限**:ohos.permission.OBSERVE_FORM_RUNNING
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------- |
| type | string | 是 | 填写'formRemove',表示卡片删除事件。 |
| bundleName | string | 否 | 指定订阅卡片使用方包的bundleName。
填写该参数时,与注册时填写bundleName的on接口对应。
缺省则订阅所有卡片使用方的卡片删除事件,与注册时未填写bundleName的on接口相对应。 |
| callback | Callback<formInfo.RunningFormInfo> | 否 | 回调函数。返回卡片RunningFormInfo。缺省时,表示注销对应已注册事件回调。
需与对应on('formRemove')的callback一致。|
**示例:**
```ts
import formObserver from '@ohos.app.form.formObserver';
let bundleName = 'ohos.samples.FormApplication';
let callback = function(data) {
console.log('a new form added, data: ${JSON.stringify(data)');
}
formObserver.off('formRemove', callback);
formObserver.off('formRemove', bundleName, callback);
```
> **说明:**
> on('formRemove', callback)与off('formRemove', callback)相对应;
> on('formRemove', bundleName, callback)与off('formRemove', bundleName, callback)相对应;
> 订阅(on)只能由自己对应的取消订阅接口(off)取消。
## on('notifyVisible')
on(type: 'notifyVisible', observerCallback: Callback<Array<[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)>>): void
订阅通知卡片可见的事件。
触发通知卡片可见场景为:调用notifyVisibleForms接口通知对应卡片可见性变更为可见状态
**需要权限**:ohos.permission.OBSERVE_FORM_RUNNING
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type | string | 是 | 仅允许填写'notifyVisible',表示订阅通知卡片可见的事件。 |
| callback | Callback <Array<[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)>> | 是 | 回调函数。返回订阅通知卡片可见的RunningFormInfo。 |
**示例:**
```ts
import formObserver from '@ohos.app.form.formObserver';
let callback = function(data) {
console.log('form change visibility, data: ${JSON.stringify(data)');
}
formObserver.on('notifyVisible', callback);
```
## on('notifyVisible')
on(type: 'notifyVisible', hostBundleName: string, observerCallback: Callback<Array<[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)>>): void
订阅通知卡片可见的事件。
触发通知卡片可见场景为:调用notifyVisibleForms接口通知对应卡片可见性变更为可见状态
**需要权限**:ohos.permission.OBSERVE_FORM_RUNNING
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type | string | 是 | 仅允许填写'notifyVisible',表示订阅通知卡片可见的事件。 |
| bundleName | string | 是 | 指定卡片使用方的bundleName,用于订阅卡片在该使用方的可见状态变更事件。 |
| callback | Callback <Array<[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)>> | 是 | 回调函数。返回订阅通知卡片可见的RunningFormInfo。 |
**示例:**
```ts
import formObserver from '@ohos.app.form.formObserver';
let bundleName = 'ohos.samples.FormApplication';
let callback = function(data) {
console.log('form change visibility, data: ${JSON.stringify(data)');
}
formObserver.on('notifyVisible', bundleName, callback);
```
## off('notifyVisible')
off(type: "notifyVisible", hostBundleName?: string, observerCallback?: Callback<Array<[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)>>): void
取消订阅通知卡片可见的事件。
**需要权限**:ohos.permission.OBSERVE_FORM_RUNNING
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type | string | 是 | 仅允许填写'notifyVisible',表示取消订阅通知卡片为可见的事件。 |
| bundleName | string | 否 | 指定卡片使用方的bundleName,用于订阅卡片在该使用方的可见状态变更事件。
填写该参数时,与注册时填写bundleName的on接口对应。 |
| callback | Callback <Array<[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)>> | 否 | 入参,注册时注册进去的callback。缺省时,表示注销对应已注册订阅的回调。
需与对应on('notifyVisible')的callback一致。 |
**示例:**
```ts
import formObserver from '@ohos.app.form.formObserver';
let bundleName = 'ohos.samples.FormApplication';
let callback = function(data) {
console.log('form change visibility, data: ${JSON.stringify(data)');
}
formObserver.off('notifyVisible', callback);
formObserver.off('notifyVisible', bundleName, callback);
```
> **说明:**
> on('notifyVisible', callback)与off('notifyVisible', callback)相对应;
> on('notifyVisible', bundleName, callback)与off('notifyVisible', bundleName, callback)相对应;
> 订阅(on)只能由自己对应的取消订阅接口(off)取消。
## on('notifyInvisible')
on(type: 'notifyInvisible', observerCallback: Callback<Array<[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)>>): void
订阅通知卡片不可见的事件。
触发通知卡片不可见场景为:调用notifyInvisibleForms接口通知对应卡片可见性变更为不可见状态
**需要权限**:ohos.permission.OBSERVE_FORM_RUNNING
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type | string | 是 | 仅允许填写'notifyInvisible',表示订阅卡片不可见的事件。 |
| callback | Callback <Array<[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)>> | 是 | 回调函数。返回订阅通知卡片不可见的RunningFormInfo。 |
**示例:**
```ts
import formObserver from '@ohos.app.form.formObserver';
let callback = function(data) {
console.log('form change invisibility, data: ${JSON.stringify(data)');
}
formObserver.on('notifyInvisible', callback);
```
## on('notifyInvisible')
on(type: 'notifyInvisible', hostBundleName: string, observerCallback: Callback<Array<[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)>>): void
订阅通知卡片不可见的事件。
触发通知卡片不可见场景为:调用notifyInvisibleForms接口通知对应卡片可见性变更为不可见状态
**需要权限**:ohos.permission.OBSERVE_FORM_RUNNING
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type | string | 是 | 仅允许填写'notifyInvisible',表示订阅卡片不可见的事件。 |
| bundleName | string | 是 | 指定卡片使用方的bundleName,用于订阅卡片在该使用方的可见状态变更事件。 |
| callback | Callback <Array<[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)>> | 是 | 回调函数。返回订阅通知卡片不可见的RunningFormInfo。 |
**示例:**
```ts
import formObserver from '@ohos.app.form.formObserver';
let bundleName = 'ohos.samples.FormApplication';
let callback = function(data) {
console.log('form change invisibility, data: ${JSON.stringify(data)');
}
formObserver.on('notifyInvisible', bundleName, callback);
```
## off('notifyInvisible')
off(type: "notifyInvisible", hostBundleName?: string, observerCallback?: Callback<Array<[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)>>): void
取消订阅通知卡片不可见事件。
**需要权限**:ohos.permission.OBSERVE_FORM_RUNNING
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| type | string | 是 | 仅允许填写'notifyInvisible',表示卡片可见性变更为不可见。 |
| bundleName | string | 否 | 指定卡片使用方的bundleName,用于订阅卡片在该使用方的可见状态变更事件。
填写该参数时,与注册时填写bundleName的on接口对应。
|
| callback | Callback <Array<[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)>> | 否 | 入参,注册时注册进去的callback。缺省时,表示注销对应已注册事件回调。
需与对应on('notifyInvisible')的callback一致。 |
**示例:**
```ts
import formObserver from '@ohos.app.form.formObserver';
let bundleName = 'ohos.samples.FormApplication';
let callback = function(data) {
console.log('form change invisibility, data: ${JSON.stringify(data)');
}
formObserver.off('notifyInvisible', callback);
formObserver.off('notifyInvisible', bundleName, callback);
```
> **说明:**
> on('notifyInvisible', callback)与off('notifyInvisible', callback)相对应;
> on('notifyInvisible', bundleName, callback)与off('notifyInvisible', bundleName, callback)相对应;
> 订阅(on)只能由自己对应的取消订阅接口(off)取消。
## getRunningFormInfos
getRunningFormInfos(callback: AsyncCallback<Array<formInfo.RunningFormInfo>>, hostBundleName?: string): void
获取设备上正在运行的所有非临时卡片信息。使用callback异步回调。
**需要权限**:ohos.permission.OBSERVE_FORM_RUNNING
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------- |
| callback | AsyncCallback<Array<formInfo.RunningFormInfo>> | 是 | 回调函数。获取设备上指定应用为卡片使用方的当前卡片信息成功,error为undefined,data为查询到的卡片信息。|
| hostBundleName | string | 否 | 指定要查询的卡片使用方名称,指定后会仅返回该卡片使用方下正在运行的非临时卡片信息。
缺省时,返回设备上所有正在运行的非临时卡片信息。 |
**错误码:**
以下错误码的详细介绍请参见[卡片错误码](../errorcodes/errorcode-form.md)。
| 错误码ID | 错误信息 |
| -------- | -------- |
| 16500050 | An IPC connection error happened. |
| 16500060 | A service connection error happened, please try again later. ||
**示例:**
```ts
import formObserver from '@ohos.app.form.formObserver';
try {
formObserver.getRunningFormInfos((error, data) => {
if (error) {
console.error(`error, code: ${error.code}, message: ${error.message}`);
} else {
console.log('formObserver getRunningFormInfos, data: ${JSON.stringify(data)}');
}
}, 'com.example.ohos.formjsdemo');
} catch(error) {
console.error(`catch error, code: ${error.code}, message: ${error.message}`);
}
```
## getRunningFormInfos
getRunningFormInfos(hostBundleName?: string): Promise<Array<formInfo.RunningFormInfo>>
获取设备上正在运行的所有非临时卡片信息。使用Promise异步回调。
**需要权限**:ohos.permission.OBSERVE_FORM_RUNNING
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------- |
| hostBundleName | string | 否 | 指定要查询的卡片使用方名称,指定后会仅返回该卡片使用方下正在运行的非临时卡片信息。
缺省时,返回设备上所有正在运行的非临时卡片信息。 |
**返回值:**
| 类型 | 说明 |
| :----------------------------------------------------------- | :---------------------------------- |
| Promise<Array<[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)>> | Promise对象,返回查询到的卡片信息。 |
**错误码:**
以下错误码的详细介绍请参见[卡片错误码](../errorcodes/errorcode-form.md)。
| 错误码ID | 错误信息 |
| -------- | -------- |
| 16500050 | An IPC connection error happened. |
| 16500060 | A service connection error happened, please try again later. ||
**示例:**
```ts
import formObserver from '@ohos.app.form.formObserver';
try {
formObserver.getRunningFormInfos('com.example.ohos.formjsdemo').then((data) => {
console.log('formObserver getRunningFormInfos, data: ${JSON.stringify(data)}');
}).catch((error) => {
console.error(`error, code: ${error.code}, message: ${error.message}`);
});
} catch(error) {
console.error(`catch error, code: ${error.code}, message: ${error.message}`);
}
```
## getRunningFormInfosByFilter
getRunningFormInfosByFilter(formProviderFilter: formInfo.FormProviderFilter): Promise<Array<formInfo.RunningFormInfo>>
根据提供方信息查询卡片已有的使用方列表信息。使用Promise异步回调。
**需要权限**:ohos.permission.OBSERVE_FORM_RUNNING
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ----------- | --------------- | ---- | -------------------------------- |
| formProviderFilter | [formInfo.FormProviderFilter](js-apis-app-form-formInfo.md#formProviderFilter) | 是 | 卡片提供方应用信息。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | ------------------------- |
| Promise<Array<[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md#RunningFormInfo)>> | Promise对象,返回查询到的使用方列表信息。 |
**错误码:**
以下错误码的详细介绍请参见[卡片错误码](../errorcodes/errorcode-form.md)。
| 错误码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 formObserver from '@ohos.app.form.formObserver';
let formInstanceFilter = {
bundleName: "com.example.formprovide",
abilityName: "EntryFormAbility",
formName: "widget",
moduleName: "entry"
}
try {
formObserver.getRunningFormInfosByFilter(formInstanceFilter).then(data1 => {
console.info('formObserver getRunningFormInfosByFilter return err :');
}).catch((error) => {
console.error(`error, code: ${error.code}, message: ${error.message}`);
});
} catch(error) {
console.error(`catch error, code: ${error.code}, message: ${error.message}`);
}
```
## getRunningFormInfosByFilter
getRunningFormInfosByFilter(formProviderFilter: formInfo.FormProviderFilter, callback: AsyncCallback<Array<formInfo.RunningFormInfo>>): void
根据提供方信息查询卡片已有的使用方列表信息。使用callback异步回调。
**需要权限**:ohos.permission.OBSERVE_FORM_RUNNING
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ----------- | --------------- | ---- | -------------------------------- |
| formProviderFilter | [formInfo.FormProviderFilter](js-apis-app-form-formInfo.md#formProviderFilter) | 是 | 卡片提供方应用信息。 |
| callback | AsyncCallback<Array<[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)>> | 是 | 回调函数。返回查询到的使用方列表信息,error为undefined,data为查询到的使用方列表信息;否则为错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[卡片错误码](../errorcodes/errorcode-form.md)。
| 错误码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 formObserver from '@ohos.app.form.formObserver';
let formInstanceFilter = {
bundleName: "com.example.formprovide",
abilityName: "EntryFormAbility",
formName: "widget",
moduleName: "entry"
}
try {
formObserver.getRunningFormInfosByFilter(formInstanceFilter,(error, data) => {
if (error) {
console.error(`error, code: ${error.code}, message: ${error.message}`);
} else {
console.log('formObserver getRunningFormInfosByFilter, data: ${JSON.stringify(data)}');
}
});
} catch(error) {
console.error(`catch error, code: ${error.code}, message: ${error.message}`);
}
```
## getRunningFormInfoById
getRunningFormInfoById(formId: string): Promise<formInfo.RunningFormInfo>
根据formId查询卡片已有的使用方列表信息。使用Promise异步回调。
**需要权限**:ohos.permission.OBSERVE_FORM_RUNNING
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ----------- | --------------- | ---- | -------------------------------- |
| formId | string | 是 | 卡片标识。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | ------------------------- |
| Promise<[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)> | Promise对象,返回查询到的使用方列表信息。 |
**错误码:**
以下错误码的详细介绍请参见[卡片错误码](../errorcodes/errorcode-form.md)。
| 错误码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 formObserver from '@ohos.app.form.formObserver';
let formId = '12400633174999288';
try {
formObserver.getRunningFormInfoById(formId).then(data1 => {
console.info('formObserver getRunningFormInfoById return err :');
}).catch((error) => {
console.error(`error, code: ${error.code}, message: ${error.message}`);
});
} catch(error) {
console.error(`catch error, code: ${error.code}, message: ${error.message}`);
}
```
## getRunningFormInfoById
getRunningFormInfoById(formId: string, callback: AsyncCallback<formInfo.RunningFormInfo>): void
根据提供方信息查询卡片已有的使用方列表信息。使用callback异步回调。
**需要权限**:ohos.permission.OBSERVE_FORM_RUNNING
**系统能力**:SystemCapability.Ability.Form
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ----------- | --------------- | ---- | -------------------------------- |
| formId | string | 是 | 卡片标识。 |
| callback | AsyncCallback<[formInfo.RunningFormInfo](js-apis-app-form-formInfo.md)> | 是 | 回调函数。返回查询到的使用方列表信息,error为undefined,data为查询到的使用方列表信息;否则为错误对象。 |
**错误码:**
以下错误码的详细介绍请参见[卡片错误码](../errorcodes/errorcode-form.md)。
| 错误码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 formObserver from '@ohos.app.form.formObserver';
let formId = '12400633174999288';
try {
formObserver.getRunningFormInfoById(formId,(error, data) => {
if (error) {
console.error(`error, code: ${error.code}, message: ${error.message}`);
} else {
console.log('formObserver getRunningFormInfoById, data: ${JSON.stringify(data)}');
}
});
} catch(error) {
console.error(`catch error, code: ${error.code}, message: ${error.message}`);
}
```