# @ohos.app.ability.wantAgent (WantAgent) WantAgent is a class that encapsulates a [Want](./js-apis-app-ability-want.md) object and allows the application to execute the Want at a future time point. This module provides the APIs for creating a WantAgent object, obtaining the bundle name and UID of the application to which a WantAgent object belongs, proactively triggering a WantAgent object, and checking whether two WantAgent objects are the same. A typical use scenario of WantAgent is notification processing. For example, when a user touches a notification, the [trigger](#wantagenttrigger) API of WantAgent is triggered and the target application is started. For details, see [Notification](../../notification/notification-with-wantagent.md). > **NOTE** > > The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. ## Modules to Import ```ts import { wantAgent } from '@kit.AbilityKit'; ``` ## wantAgent.getWantAgent getWantAgent(info: WantAgentInfo, callback: AsyncCallback\): void Obtains a WantAgent object. This API uses an asynchronous callback to return the result. If the creation fails, a null value is returned. **Atomic service API**: This API can be used in atomic services since API version 12. **System capability**: SystemCapability.Ability.AbilityRuntime.Core **Parameters** | Name | Type | Mandatory| Description | | -------- | -------------------------- | ---- | ----------------------- | | info | [WantAgentInfo](js-apis-inner-wantAgent-wantAgentInfo.md) | Yes | Configuration information required for creating the WantAgent object, including the target UIAbility, operation type, and request code. In **WantAgentInfo**, a third-party application is only allowed to specify its own UIAbility.| | callback | AsyncCallback\ | Yes | Callback used to return the WantAgent object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md). | ID | Error Message | |-----------|--------------------| | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 16000007 | Service busy. There are concurrent tasks. Try again later. | | 16000151 | Invalid wantAgent object.| **Example** ```ts import { wantAgent, Want } from '@kit.AbilityKit'; import type { WantAgent } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; // WantAgent object let wantAgentData: WantAgent; // WantAgentInfo object let wantAgentInfo: wantAgent.WantAgentInfo = { wants: [ { deviceId: 'deviceId', bundleName: 'com.example.myapplication', abilityName: 'EntryAbility', action: 'action1', entities: ['entity1'], type: 'MIMETYPE', uri: 'key={true,true,false}', parameters: { mykey0: 2222, mykey1: [1, 2, 3], mykey2: '[1, 2, 3]', mykey3: 'ssssssssssssssssssssssssss', mykey4: [false, true, false], mykey5: ['qqqqq', 'wwwwww', 'aaaaaaaaaaaaaaaaa'], mykey6: true, } } as Want ], actionType: wantAgent.OperationType.START_ABILITY, requestCode: 0, wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] }; // getWantAgent callback function getWantAgentCallback(err: BusinessError, data: WantAgent) { if (err) { console.error(`getWantAgent failed, code: ${JSON.stringify(err.code)}, message: ${JSON.stringify(err.message)}`); } else { wantAgentData = data; } } try { wantAgent.getWantAgent(wantAgentInfo, getWantAgentCallback); } catch (err) { console.error(`getWantAgent failed, error: ${JSON.stringify(err)}`); } ``` ## wantAgent.getWantAgent getWantAgent(info: WantAgentInfo): Promise\ Obtains a WantAgent object. This API uses a promise to return the result. If the creation fails, a null value is returned. **Atomic service API**: This API can be used in atomic services since API version 12. **System capability**: SystemCapability.Ability.AbilityRuntime.Core **Parameters** | Name| Type | Mandatory| Description | | ---- | ------------- | ---- | ------------- | | info | [WantAgentInfo](js-apis-inner-wantAgent-wantAgentInfo.md) | Yes | Configuration information required for creating the WantAgent object, including the target UIAbility, operation type, and request code. In **WantAgentInfo**, a third-party application is only allowed to specify its own UIAbility.| **Return value** | Type | Description | | ----------------------------------------------------------- | ------------------------------------------------------------ | | Promise\ | Promise used to return the WantAgent object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md). | ID | Error Message | |-----------|--------------------| | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 16000007 | Service busy. There are concurrent tasks. Try again later. | | 16000151 | Invalid wantAgent object.| **Example** ```ts import { wantAgent, Want } from '@kit.AbilityKit'; import type { WantAgent } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; let wantAgentData: WantAgent; // WantAgentInfo object let wantAgentInfo: wantAgent.WantAgentInfo = { wants: [ { deviceId: 'deviceId', bundleName: 'com.example.myapplication', abilityName: 'EntryAbility', action: 'action1', entities: ['entity1'], type: 'MIMETYPE', uri: 'key={true,true,false}', parameters: { mykey0: 2222, mykey1: [1, 2, 3], mykey2: '[1, 2, 3]', mykey3: 'ssssssssssssssssssssssssss', mykey4: [false, true, false], mykey5: ['qqqqq', 'wwwwww', 'aaaaaaaaaaaaaaaaa'], mykey6: true, } } as Want ], actionType: wantAgent.OperationType.START_ABILITY, requestCode: 0, wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] }; try { wantAgent.getWantAgent(wantAgentInfo).then((data) => { wantAgentData = data; }).catch((err: BusinessError) => { console.error(`getWantAgent failed, code: ${JSON.stringify(err.code)}, message: ${JSON.stringify(err.message)}`); }); } catch (err) { console.error(`getWantAgent failed! ${err.code} ${err.message}`); } ``` ## wantAgent.getBundleName getBundleName(agent: WantAgent, callback: AsyncCallback\): void Obtains the bundle name of the application to which the WantAgent object belongs. This API uses an asynchronous callback to return the result. **Atomic service API**: This API can be used in atomic services since API version 12. **System capability**: SystemCapability.Ability.AbilityRuntime.Core **Parameters** | Name | Type | Mandatory| Description | | -------- | ----------------------- | ---- | --------------------------------- | | agent | WantAgent | Yes | Target WantAgent object. | | callback | AsyncCallback\ | Yes | Callback used to return the bundle name.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md). | ID | Error Message | |-----------|--------------------| | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 16000007 | Service busy. There are concurrent tasks. Try again later. | | 16000151 | Invalid wantAgent object.| **Example** ```ts import { wantAgent, Want } from '@kit.AbilityKit'; import type { WantAgent } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; // WantAgent object let wantAgentData: WantAgent; // WantAgentInfo object let wantAgentInfo: wantAgent.WantAgentInfo = { wants: [ { deviceId: 'deviceId', bundleName: 'com.example.myapplication', abilityName: 'EntryAbility', action: 'action1', entities: ['entity1'], type: 'MIMETYPE', uri: 'key={true,true,false}', parameters: { mykey0: 2222, mykey1: [1, 2, 3], mykey2: '[1, 2, 3]', mykey3: 'ssssssssssssssssssssssssss', mykey4: [false, true, false], mykey5: ['qqqqq', 'wwwwww', 'aaaaaaaaaaaaaaaaa'], mykey6: true, } } as Want ], actionType: wantAgent.OperationType.START_ABILITY, requestCode: 0, wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] }; // getWantAgent callback function getWantAgentCallback(err: BusinessError, data: WantAgent) { if (err) { console.error(`getWantAgent failed, code: ${JSON.stringify(err.code)}, message: ${JSON.stringify(err.message)}`); } else { wantAgentData = data; } // getBundleName callback let getBundleNameCallback = (err: BusinessError, data: string) => { if (err) { console.error(`getBundleName failed! ${err.code} ${err.message}`); } else { console.info(`getBundleName ok! ${JSON.stringify(data)}`); } } try { wantAgent.getBundleName(wantAgentData, getBundleNameCallback); } catch (err) { console.error(`getBundleName failed! ${err.code} ${err.message}`); } } try { wantAgent.getWantAgent(wantAgentInfo, getWantAgentCallback); } catch (err) { console.error(`getWantAgent failed! ${err.code} ${err.message}`); } ``` ## wantAgent.getBundleName getBundleName(agent: WantAgent): Promise\ Obtains the bundle name of the application to which the WantAgent object belongs. This API uses a promise to return the result. **Atomic service API**: This API can be used in atomic services since API version 12. **System capability**: SystemCapability.Ability.AbilityRuntime.Core **Parameters** | Name | Type | Mandatory| Description | | ----- | --------- | ---- | ------------- | | agent | WantAgent | Yes | Target WantAgent object.| **Return value** | Type | Description | | ----------------------------------------------------------- | ------------------------------------------------------------ | | Promise\ | Promise used to return the bundle name.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md). | ID | Error Message | |-----------|--------------------| | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 16000007 | Service busy. There are concurrent tasks. Try again later. | | 16000151 | Invalid wantAgent object.| **Example** ```ts import { wantAgent, Want } from '@kit.AbilityKit'; import type { WantAgent } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; // WantAgent object let wantAgentData: WantAgent; // WantAgentInfo object let wantAgentInfo: wantAgent.WantAgentInfo = { wants: [ { deviceId: 'deviceId', bundleName: 'com.example.myapplication', abilityName: 'EntryAbility', action: 'action1', entities: ['entity1'], type: 'MIMETYPE', uri: 'key={true,true,false}', parameters: { mykey0: 2222, mykey1: [1, 2, 3], mykey2: '[1, 2, 3]', mykey3: 'ssssssssssssssssssssssssss', mykey4: [false, true, false], mykey5: ['qqqqq', 'wwwwww', 'aaaaaaaaaaaaaaaaa'], mykey6: true, } } as Want ], actionType: wantAgent.OperationType.START_ABILITY, requestCode: 0, wantAgentFlags:[wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] }; // getWantAgent callback function getWantAgentCallback(err: BusinessError, data: WantAgent) { if (err) { console.error(`getWantAgent failed, code: ${JSON.stringify(err.code)}, message: ${JSON.stringify(err.message)}`); } else { wantAgentData = data; } try { wantAgent.getBundleName(wantAgentData).then((data)=>{ console.info(`getBundleName ok! ${JSON.stringify(data)}`); }).catch((err: BusinessError)=>{ console.error(`getBundleName failed! ${err.code} ${err.message}`); }); } catch(err){ console.error(`getBundleName failed! ${err.code} ${err.message}`); } } try { wantAgent.getWantAgent(wantAgentInfo, getWantAgentCallback); } catch(err) { console.error(`getWantAgent failed! ${err.code} ${err.message}`); } ``` ## wantAgent.getUid getUid(agent: WantAgent, callback: AsyncCallback\): void Obtains the UID of the application to which the WantAgent object belongs. This API uses an asynchronous callback to return the result. **Atomic service API**: This API can be used in atomic services since API version 12. **System capability**: SystemCapability.Ability.AbilityRuntime.Core **Parameters** | Name | Type | Mandatory| Description | | -------- | ----------------------- | ---- | ----------------------------------- | | agent | WantAgent | Yes | Target WantAgent object. | | callback | AsyncCallback\ | Yes | Callback used to return the UID of the application.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md). | ID | Error Message | |-----------|--------------------| | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 16000007 | Service busy. There are concurrent tasks. Try again later. | | 16000151 | Invalid wantAgent object.| **Example** ```ts import { wantAgent, Want } from '@kit.AbilityKit'; import type { WantAgent } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; // WantAgent object let wantAgentData: WantAgent; // WantAgentInfo object let wantAgentInfo: wantAgent.WantAgentInfo = { wants: [ { deviceId: 'deviceId', bundleName: 'com.example.myapplication', abilityName: 'EntryAbility', action: 'action1', entities: ['entity1'], type: 'MIMETYPE', uri: 'key={true,true,false}', parameters: { mykey0: 2222, mykey1: [1, 2, 3], mykey2: '[1, 2, 3]', mykey3: 'ssssssssssssssssssssssssss', mykey4: [false, true, false], mykey5: ['qqqqq', 'wwwwww', 'aaaaaaaaaaaaaaaaa'], mykey6: true, } } as Want ], actionType: wantAgent.OperationType.START_ABILITY, requestCode: 0, wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] }; // getWantAgent callback function getWantAgentCallback(err: BusinessError, data: WantAgent) { if (err) { console.error(`getWantAgent failed, code: ${err.code}, message: ${err.message}.`); } else { wantAgentData = data; } // getUid callback let getUidCallback = (err: BusinessError, data: number) => { if (err) { console.error(`getUid failed, err code: ${err.code}, err msg: ${err.message}.`); } else { console.info(`getUid ok, data: ${JSON.stringify(data)}.`); } } try { wantAgent.getUid(wantAgentData, getUidCallback); } catch (err) { let code = (err as BusinessError).code; let msg = (err as BusinessError).message; console.error(`getUid failed, err code: ${code}, err msg: ${msg}.`); } } try { wantAgent.getWantAgent(wantAgentInfo, getWantAgentCallback); } catch (err) { let code = (err as BusinessError).code; let msg = (err as BusinessError).message; console.error(`getWantAgent failed, err code: ${code}, err msg: ${msg}.`); } ``` ## wantAgent.getUid getUid(agent: WantAgent): Promise\ Obtains the UID of the application to which the WantAgent object belongs. This API uses a promise to return the result. **Atomic service API**: This API can be used in atomic services since API version 12. **System capability**: SystemCapability.Ability.AbilityRuntime.Core **Parameters** | Name | Type | Mandatory| Description | | ----- | --------- | ---- | ------------- | | agent | WantAgent | Yes | Target WantAgent object.| **Return value** | Type | Description | | ----------------- | ------------------------------------------------- | | Promise\ | Promise used to return the UID of the application.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md). | ID | Error Message | |-----------|--------------------| | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 16000007 | Service busy. There are concurrent tasks. Try again later. | | 16000151 | Invalid wantAgent object.| **Example** ```ts import { wantAgent, Want } from '@kit.AbilityKit'; import type { WantAgent } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; // WantAgent object let wantAgentData: WantAgent; // WantAgentInfo object let wantAgentInfo: wantAgent.WantAgentInfo = { wants: [ { deviceId: 'deviceId', bundleName: 'com.example.myapplication', abilityName: 'EntryAbility', action: 'action1', entities: ['entity1'], type: 'MIMETYPE', uri: 'key={true,true,false}', parameters: { mykey0: 2222, mykey1: [1, 2, 3], mykey2: '[1, 2, 3]', mykey3: 'ssssssssssssssssssssssssss', mykey4: [false, true, false], mykey5: ['qqqqq', 'wwwwww', 'aaaaaaaaaaaaaaaaa'], mykey6: true, } } as Want ], actionType: wantAgent.OperationType.START_ABILITY, requestCode: 0, wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] }; // getWantAgent callback function getWantAgentCallback(err: BusinessError, data: WantAgent) { if (err) { console.error(`getWantAgent failed, err code: ${err.code}, err msg: ${err.message}.`); } else { wantAgentData = data; } try { wantAgent.getUid(wantAgentData).then((data) => { console.info(`getUid ok, data: ${JSON.stringify(data)}.`); }).catch((err: BusinessError) => { console.error(`getUid failed, err code: ${err.code}, err msg: ${err.message}.`); }); } catch (err) { let code = (err as BusinessError).code; let msg = (err as BusinessError).message; console.error(`getUid failed, err code: ${code}, err msg: ${msg}.`); } } try { wantAgent.getWantAgent(wantAgentInfo, getWantAgentCallback); } catch (err) { let code = (err as BusinessError).code; let msg = (err as BusinessError).message; console.error(`getWantAgent failed, err code: ${code}, err msg: ${msg}.`); } ``` ## wantAgent.cancel cancel(agent: WantAgent, callback: AsyncCallback\): void Cancels a WantAgent object. This API uses an asynchronous callback to return the result. **Atomic service API**: This API can be used in atomic services since API version 12. **System capability**: SystemCapability.Ability.AbilityRuntime.Core **Parameters** | Name | Type | Mandatory| Description | | -------- | --------------------- | ---- | --------------------------- | | agent | WantAgent | Yes | Target WantAgent object. | | callback | AsyncCallback\ | Yes | Callback used to return the result.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md). | ID | Error Message | |-----------|--------------------| | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 16000007 | Service busy. There are concurrent tasks. Try again later. | | 16000151 | Invalid wantAgent object.| **Example** ```ts import { wantAgent, Want } from '@kit.AbilityKit'; import type { WantAgent } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; // WantAgent object let wantAgentData: WantAgent; // WantAgentInfo object let wantAgentInfo: wantAgent.WantAgentInfo = { wants: [ { deviceId: 'deviceId', bundleName: 'com.example.myapplication', abilityName: 'EntryAbility', action: 'action1', entities: ['entity1'], type: 'MIMETYPE', uri: 'key={true,true,false}', parameters: { mykey0: 2222, mykey1: [1, 2, 3], mykey2: '[1, 2, 3]', mykey3: 'ssssssssssssssssssssssssss', mykey4: [false, true, false], mykey5: ['qqqqq', 'wwwwww', 'aaaaaaaaaaaaaaaaa'], mykey6: true, } } as Want ], actionType: wantAgent.OperationType.START_ABILITY, requestCode: 0, wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] }; // getWantAgent callback function getWantAgentCallback(err: BusinessError, data: WantAgent) { if (err) { console.error(`getWantAgent failed, err code: ${err.code}, err msg: ${err.message}.`); } else { wantAgentData = data; } // cancel callback let cancelCallback = (err: BusinessError, data: void) => { if (err) { console.error(`cancel failed, err code: ${err.code}, err msg: ${err.message}.`); } else { console.info(`cancel sucecss.`); } } try { wantAgent.cancel(wantAgentData, cancelCallback); } catch (err) { let code = (err as BusinessError).code; let msg = (err as BusinessError).message; console.error(`cancel failed, err code: ${code}, err msg: ${msg}.`); } } try { wantAgent.getWantAgent(wantAgentInfo, getWantAgentCallback); } catch (err) { let code = (err as BusinessError).code; let msg = (err as BusinessError).message; console.error(`getWantAgent failed, err code: ${code}, err msg: ${msg}.`); } ``` ## wantAgent.cancel cancel(agent: WantAgent): Promise\ Cancels a WantAgent object. This API uses a promise to return the result. **Atomic service API**: This API can be used in atomic services since API version 12. **System capability**: SystemCapability.Ability.AbilityRuntime.Core **Parameters** | Name | Type | Mandatory| Description | | ----- | --------- | ---- | ------------- | | agent | WantAgent | Yes | Target WantAgent object.| **Return value** | Type | Description | | --------------- | ------------------------------- | | Promise\ | Promise used to return the result.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md). | ID | Error Message | |-----------|--------------------| | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 16000007 | Service busy. There are concurrent tasks. Try again later. | | 16000151 | Invalid wantAgent object.| **Example** ```ts import { wantAgent, Want } from '@kit.AbilityKit'; import type { WantAgent } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; // WantAgent object let wantAgentData: WantAgent; // WantAgentInfo object let wantAgentInfo: wantAgent.WantAgentInfo = { wants: [ { deviceId: 'deviceId', bundleName: 'com.example.myapplication', abilityName: 'EntryAbility', action: 'action1', entities: ['entity1'], type: 'MIMETYPE', uri: 'key={true,true,false}', parameters: { mykey0: 2222, mykey1: [1, 2, 3], mykey2: '[1, 2, 3]', mykey3: 'ssssssssssssssssssssssssss', mykey4: [false, true, false], mykey5: ['qqqqq', 'wwwwww', 'aaaaaaaaaaaaaaaaa'], mykey6: true, } } as Want ], actionType: wantAgent.OperationType.START_ABILITY, requestCode: 0, wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] }; // getWantAgent callback function getWantAgentCallback(err: BusinessError, data: WantAgent) { if (err) { console.error(`getWantAgent failed, err code: ${err.code}, err msg: ${err.message}.`); } else { wantAgentData = data; } try { wantAgent.cancel(wantAgentData).then((data) => { console.info('cancel success.'); }).catch((err: BusinessError) => { console.error(`cancel failed, err code: ${err.code}, err msg: ${err.message}.`); }); } catch (err) { let code = (err as BusinessError).code; let msg = (err as BusinessError).message; console.error(`cancel failed, err code: ${code}, err msg: ${msg}.`); } } try { wantAgent.getWantAgent(wantAgentInfo, getWantAgentCallback); } catch (err) { let code = (err as BusinessError).code; let msg = (err as BusinessError).message; console.error(`getWantAgent failed, err code: ${code}, err msg: ${msg}.`); } ``` ## wantAgent.trigger trigger(agent: WantAgent, triggerInfo: TriggerInfo, callback?: AsyncCallback\): void Proactively triggers a WantAgent object. This API uses an asynchronous callback to return the result. **Atomic service API**: This API can be used in atomic services since API version 12. **System capability**: SystemCapability.Ability.AbilityRuntime.Core **Parameters** | Name | Type | Mandatory| Description | | ----------- | ----------------------------- | ---- | ------------------------------- | | agent | WantAgent | Yes | Target WantAgent object. | | triggerInfo | [TriggerInfo](js-apis-inner-wantAgent-triggerInfo.md) | Yes | Information carried when the WantAgent object is triggered, for example, **extraInfos**.| | callback | AsyncCallback\<[CompleteData](#completedata)\> | No | Callback used to return the result.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | |-----------|--------------------| | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | **Example** ```ts import { wantAgent, Want } from '@kit.AbilityKit'; import type { WantAgent } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; // WantAgent object let wantAgentData: WantAgent; // triggerInfo let triggerInfo: wantAgent.TriggerInfo = { code: 0 // Custom result code. }; // WantAgentInfo object let wantAgentInfo: wantAgent.WantAgentInfo = { wants: [ { deviceId: 'deviceId', bundleName: 'com.example.myapplication', abilityName: 'EntryAbility', action: 'action1', entities: ['entity1'], type: 'MIMETYPE', uri: 'key={true,true,false}', parameters: { mykey0: 2222, mykey1: [1, 2, 3], mykey2: '[1, 2, 3]', mykey3: 'ssssssssssssssssssssssssss', mykey4: [false, true, false], mykey5: ['qqqqq', 'wwwwww', 'aaaaaaaaaaaaaaaaa'], mykey6: true, } } as Want ], actionType: wantAgent.OperationType.START_ABILITY, requestCode: 0, wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] }; // getWantAgent callback function getWantAgentCallback(err: BusinessError, data: WantAgent) { if (err) { console.info(`getWantAgent failed, code: ${err.code}, message: ${err.message}`); } else { wantAgentData = data; } // trigger callback let triggerCallback = (err: BusinessError, data: wantAgent.CompleteData) => { if (err) { console.error(`trigger failed, code: ${err.code}, message: ${err.message}`); } else { console.info(`trigger success, data: ${JSON.stringify(data)}`); } } try { wantAgent.trigger(wantAgentData, triggerInfo, triggerCallback); } catch (err) { let code = (err as BusinessError).code; let msg = (err as BusinessError).message; console.error(`trigger failed, code: ${code}, message: ${msg}.`); } } try { wantAgent.getWantAgent(wantAgentInfo, getWantAgentCallback); } catch (err) { let code = (err as BusinessError).code; let msg = (err as BusinessError).message; console.error(`getWantAgent failed, code: ${code}, message: ${msg}.`); } ``` ## wantAgent.equal equal(agent: WantAgent, otherAgent: WantAgent, callback: AsyncCallback\): void Checks whether two WantAgent objects are equal, so as to determine whether the same operation is from the same application. This API uses an asynchronous callback to return the result. **Atomic service API**: This API can be used in atomic services since API version 12. **System capability**: SystemCapability.Ability.AbilityRuntime.Core **Parameters** | Name | Type | Mandatory| Description | | ---------- | ------------------------ | ---- | --------------------------------------- | | agent | WantAgent | Yes | The first WantAgent object. | | otherAgent | WantAgent | Yes | The second WantAgent object. | | callback | AsyncCallback\ | Yes | Callback used to return the result. **true** if equal, **false** otherwise.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | |-----------|--------------------| | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | **Example** ```ts import { wantAgent, Want } from '@kit.AbilityKit'; import type { WantAgent } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; // WantAgent object let wantAgent1: WantAgent; let wantAgent2: WantAgent; // WantAgentInfo object let wantAgentInfo: wantAgent.WantAgentInfo = { wants: [ { deviceId: 'deviceId', bundleName: 'com.example.myapplication', abilityName: 'EntryAbility', action: 'action1', entities: ['entity1'], type: 'MIMETYPE', uri: 'key={true,true,false}', parameters: { mykey0: 2222, mykey1: [1, 2, 3], mykey2: '[1, 2, 3]', mykey3: 'ssssssssssssssssssssssssss', mykey4: [false, true, false], mykey5: ['qqqqq', 'wwwwww', 'aaaaaaaaaaaaaaaaa'], mykey6: true, } } as Want ], actionType: wantAgent.OperationType.START_ABILITY, requestCode: 0, wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] }; // getWantAgent callback function getWantAgentCallback(err: BusinessError, data: WantAgent) { if (err) { console.error(`getWantAgent failed, code: ${JSON.stringify(err.code)}, message: ${JSON.stringify(err.message)}`); } else { wantAgent1 = data; wantAgent2 = data; } // equal callback let equalCallback = (err: BusinessError, data: boolean) => { if (err) { console.error(`equal failed! ${err.code} ${err.message}`); } else { console.info(`equal ok! ${JSON.stringify(data)}`); } } try { wantAgent.equal(wantAgent1, wantAgent2, equalCallback); } catch (err) { console.error(`equal failed! ${(err as BusinessError).code} ${(err as BusinessError).message}`); } } try { wantAgent.getWantAgent(wantAgentInfo, getWantAgentCallback); } catch (err) { console.error(`getWantAgent failed! ${(err as BusinessError).code} ${(err as BusinessError).message}`); } ``` ## wantAgent.equal equal(agent: WantAgent, otherAgent: WantAgent): Promise\ Checks whether two WantAgent object are equal, so as to determine whether the same operation is from the same application. This API uses a promise to return the result. **Atomic service API**: This API can be used in atomic services since API version 12. **System capability**: SystemCapability.Ability.AbilityRuntime.Core **Parameters** | Name | Type | Mandatory| Description | | ---------- | --------- | ---- | ------------- | | agent | WantAgent | Yes | The first WantAgent object.| | otherAgent | WantAgent | Yes | The second WantAgent object.| **Return value** | Type | Description | | ----------------------------------------------------------- | ------------------------------------------------------------ | | Promise\ | Promise used to return the result. **true** if equal, **false** otherwise.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | |-----------|--------------------| | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | **Example** ```ts import { wantAgent, Want } from '@kit.AbilityKit'; import type { WantAgent } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; // WantAgent object let wantAgent1: WantAgent; let wantAgent2: WantAgent; // WantAgentInfo object let wantAgentInfo: wantAgent.WantAgentInfo = { wants: [ { deviceId: 'deviceId', bundleName: 'com.example.myapplication', abilityName: 'EntryAbility', action: 'action1', entities: ['entity1'], type: 'MIMETYPE', uri: 'key={true,true,false}', parameters: { mykey0: 2222, mykey1: [1, 2, 3], mykey2: '[1, 2, 3]', mykey3: 'ssssssssssssssssssssssssss', mykey4: [false, true, false], mykey5: ['qqqqq', 'wwwwww', 'aaaaaaaaaaaaaaaaa'], mykey6: true, } } as Want ], actionType: wantAgent.OperationType.START_ABILITY, requestCode: 0, wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] }; // getWantAgent callback function getWantAgentCallback(err: BusinessError, data: WantAgent) { if (err) { console.error(`getWantAgent failed, code: ${JSON.stringify(err.code)}, message: ${JSON.stringify(err.message)}`); } else { wantAgent1 = data; wantAgent2 = data; } try { wantAgent.equal(wantAgent1, wantAgent2).then((data) => { console.info(`equal ok! ${JSON.stringify(data)}`); }).catch((err: BusinessError) => { console.error(`equal failed! ${err.code} ${err.message}`); }) } catch (err) { console.error(`equal failed! ${(err as BusinessError).code} ${(err as BusinessError).message}`); } } try { wantAgent.getWantAgent(wantAgentInfo, getWantAgentCallback); } catch (err) { console.error(`getWantAgent failed! ${(err as BusinessError).code} ${(err as BusinessError).message}`); } ``` ## wantAgent.getOperationType getOperationType(agent: WantAgent, callback: AsyncCallback\): void Obtains the operation type of a WantAgent object. This API uses an asynchronous callback to return the result. **Atomic service API**: This API can be used in atomic services since API version 12. **System capability**: SystemCapability.Ability.AbilityRuntime.Core **Parameters** | Name | Type | Mandatory| Description | | ---------- | ------------------------ | ---- | --------------------------------------- | | agent | WantAgent | Yes | Target WantAgent object. | | callback | AsyncCallback\ | Yes | Callback used to return the operation type.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md). | ID | Error Message | |-----------|--------------------| | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 16000007 | Service busy. There are concurrent tasks. Try again later. | | 16000015 | Service timeout.| | 16000151 | Invalid wantAgent object.| **Example** ```ts import { wantAgent, Want } from '@kit.AbilityKit'; import type { WantAgent } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; // WantAgent object let wantAgentData: WantAgent; // WantAgentInfo object let wantAgentInfo: wantAgent.WantAgentInfo = { wants: [ { deviceId: 'deviceId', bundleName: 'com.example.myapplication', abilityName: 'EntryAbility', action: 'action1', entities: ['entity1'], type: 'MIMETYPE', uri: 'key={true,true,false}', parameters: { mykey0: 2222, mykey1: [1, 2, 3], mykey2: '[1, 2, 3]', mykey3: 'ssssssssssssssssssssssssss', mykey4: [false, true, false], mykey5: ['qqqqq', 'wwwwww', 'aaaaaaaaaaaaaaaaa'], mykey6: true, } } as Want ], actionType: wantAgent.OperationType.START_ABILITY, requestCode: 0, wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] }; // getWantAgent callback function getWantAgentCallback(err: BusinessError, data: WantAgent) { if (err) { console.error(`getWantAgent failed, code: ${JSON.stringify(err.code)}, message: ${JSON.stringify(err.message)}`); } else { wantAgentData = data; } // getOperationTypeCallback callback let getOperationTypeCallback = (err: BusinessError, data: number) => { if (err) { console.error(`getOperationType failed! ${err.code} ${err.message}`); } else { console.info(`getOperationType ok! ${JSON.stringify(data)}`); } } try { wantAgent.getOperationType(wantAgentData, getOperationTypeCallback); } catch (err) { console.error(`getOperationTypeCallback failed! ${(err as BusinessError).code} ${(err as BusinessError).message}`); } } try { wantAgent.getWantAgent(wantAgentInfo, getWantAgentCallback); } catch (err) { console.error(`getWantAgent failed! ${(err as BusinessError).code} ${(err as BusinessError).message}`); } ``` ## wantAgent.getOperationType getOperationType(agent: WantAgent): Promise\ Obtains the operation type of a WantAgent object. This API uses a promise to return the result. **Atomic service API**: This API can be used in atomic services since API version 12. **System capability**: SystemCapability.Ability.AbilityRuntime.Core **Parameters** | Name | Type | Mandatory| Description | | ---------- | --------- | ---- | ------------- | | agent | WantAgent | Yes | Target WantAgent object.| **Return value** | Type | Description | | ----------------------------------------------------------- | ------------------------------------------------------------ | | Promise\ | Promise used to return the operation type.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md). | ID | Error Message | |-----------|--------------------| | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 16000007 | Service busy. There are concurrent tasks. Try again later. | | 16000015 | Service timeout.| | 16000151 | Invalid wantAgent object.| **Example** ```ts import { wantAgent, Want } from '@kit.AbilityKit'; import type { WantAgent } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; // WantAgent object let wantAgentData: WantAgent; // WantAgentInfo object let wantAgentInfo: wantAgent.WantAgentInfo = { wants: [ { deviceId: 'deviceId', bundleName: 'com.example.myapplication', abilityName: 'EntryAbility', action: 'action1', entities: ['entity1'], type: 'MIMETYPE', uri: 'key={true,true,false}', parameters: { mykey0: 2222, mykey1: [1, 2, 3], mykey2: '[1, 2, 3]', mykey3: 'ssssssssssssssssssssssssss', mykey4: [false, true, false], mykey5: ['qqqqq', 'wwwwww', 'aaaaaaaaaaaaaaaaa'], mykey6: true, } } as Want ], actionType: wantAgent.OperationType.START_ABILITY, requestCode: 0, wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] }; // getWantAgent callback function getWantAgentCallback(err: BusinessError, data: WantAgent) { if (err) { console.error(`getWantAgent failed, code: ${JSON.stringify(err.code)}, message: ${JSON.stringify(err.message)}`); } else { wantAgentData = data; } try { wantAgent.getOperationType(wantAgentData).then((data) => { console.info(`getOperationType ok! ${JSON.stringify(data)}`); }).catch((err: BusinessError) => { console.error(`getOperationType failed! ${err.code} ${err.message}`); }); } catch (err) { console.error(`getOperationType failed! ${(err as BusinessError).code} ${(err as BusinessError).message}`); } } try { wantAgent.getWantAgent(wantAgentInfo, getWantAgentCallback); } catch (err) { console.error(`getWantAgent failed! ${(err as BusinessError).code} ${(err as BusinessError).message}`); } ``` ## WantAgentFlags Enumerates the flags used by the WantAgent objects. **Atomic service API**: This API can be used in atomic services since API version 12. **System capability**: SystemCapability.Ability.AbilityRuntime.Core | Name | Value | Description | | ------------------- | -------------- |-------------------------------------------------------------------------| | ONE_TIME_FLAG | 0 | The WantAgent object can be used only once. | | NO_BUILD_FLAG | 1 | The WantAgent object does not exist and hence it is not created. In this case, **null** is returned. | | CANCEL_PRESENT_FLAG | 2 | The existing WantAgent object should be canceled before a new object is generated. | | UPDATE_PRESENT_FLAG | 3 | Extra information of the existing WantAgent object is replaced with that of the new object. | | CONSTANT_FLAG | 4 | The WantAgent object is immutable. | | REPLACE_ELEMENT | 5 | The **element** property in the current Want can be replaced by the **element** property in the Want passed in **WantAgent.trigger()**. This processing is not supported yet. | | REPLACE_ACTION | 6 | The **action** property in the current Want can be replaced by the **action** property in the Want passed in **WantAgent.trigger()**. This processing is not supported yet. | | REPLACE_URI | 7 | The **uri** property in the current Want can be replaced by the **uri** property in the Want passed in **WantAgent.trigger()**. This processing is not supported yet. | | REPLACE_ENTITIES | 8 | The **entities** property in the current Want can be replaced by the **entities** property in the Want passed in **WantAgent.trigger()**. This processing is not supported yet. | | REPLACE_BUNDLE | 9 | The **bundleName** property in the current Want can be replaced by the **bundleName** property in the Want passed in **WantAgent.trigger()**. This processing is not supported yet.| ## OperationType Enumerates the operation types of the WantAgent objects. **Atomic service API**: This API can be used in atomic services since API version 12. **System capability**: SystemCapability.Ability.AbilityRuntime.Core | Name | Value | Description | | ----------------- | ------------- | ------------------------- | | UNKNOWN_TYPE | 0 | Unknown operation type. | | START_ABILITY | 1 | Starts an ability with a UI.| | START_ABILITIES | 2 | Starts multiple abilities with a UI.| | START_SERVICE | 3 | Starts an ability without a UI (valid only in the FA model).| | SEND_COMMON_EVENT | 4 | Sends a common event. | ## CompleteData Describes the data returned by the operation of proactive triggering a WantAgent object. **Atomic service API**: This API can be used in atomic services since API version 12. **System capability**: SystemCapability.Ability.AbilityRuntime.Core | Name| Type| Read-only| Optional| Description| | -------- | -------- | -------- | -------- | -------- | | info | WantAgent | No| No | WantAgent object that is triggered. | | want | [Want](js-apis-app-ability-want.md) | No| No | Existing Want that is triggered. | | finalCode | number | No| No | Request code that triggers the WantAgent object.| | finalData | string | No| No | Final data collected by the common event. | | extraInfo | Record\ | No|Yes | Extra information. | ## TriggerInfo type TriggerInfo = _TriggerInfo Defines the TriggerInfo object. **Atomic service API**: This API can be used in atomic services since API version 12. **System capability**: SystemCapability.Ability.AbilityRuntime.Core | Type| Description| | --- | --- | | [_TriggerInfo](js-apis-inner-wantAgent-triggerInfo.md) | TriggerInfo object.| ## WantAgentInfo type WantAgentInfo = _WantAgentInfo Defines the WantAgentInfo object. **Atomic service API**: This API can be used in atomic services since API version 12. **System capability**: SystemCapability.Ability.AbilityRuntime.Core | Type| Description| | --- | --- | | [_WantAgentInfo](js-apis-inner-wantAgent-wantAgentInfo.md) | WantAgentInfo object.| ## WantAgent type WantAgent = object Target WantAgent object. **System capability**: SystemCapability.Ability.AbilityRuntime.Core | Type| Description| | --- | --- | | object | Target WantAgent object.|