# @ohos.app.ability.wantAgent (WantAgent) app.ability.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. The module provides APIs for creating and comparing WantAgent objects, and obtaining the user ID and bundle name of a WantAgent object. 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). You are advised to use this module, since it will replace the [@ohos.wantAgent](js-apis-wantAgent.md) module in the near future. > **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 WantAgent object is returned. Third-party applications can set only their own abilities. **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 | Information about the WantAgent object to obtain. | | 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 WantAgent object is returned. Third-party applications can set only their own abilities. **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 | Information about the WantAgent object to obtain.| **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 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 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 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 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 user ID 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 user ID.| **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.info(`getWantAgent failed, code: ${JSON.stringify(err.code)}, message: ${JSON.stringify(err.message)}`); } else { wantAgentData = data; } // getUid callback let getUidCallback = (err: BusinessError, data: number) => { if (err) { console.error(`getUid failed! ${err.code} ${err.message}`); } else { console.info(`getUid ok! ${JSON.stringify(data)}`); } } try { wantAgent.getUid(wantAgentData, getUidCallback); } catch (err) { console.error(`getUid 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): Promise\ Obtains the user ID 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 user ID.| **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.info(`getWantAgent failed, code: ${JSON.stringify(err.code)}, message: ${JSON.stringify(err.message)}`); } else { wantAgentData = data; } try { wantAgent.getUid(wantAgentData).then((data) => { console.info(`getUid ok! ${JSON.stringify(data)}`); }).catch((err: BusinessError) => { console.error(`getUid failed! ${err.code} ${err.message}`); }); } catch (err) { console.error(`getUid failed! ${err.code} ${err.message}`); } } try { wantAgent.getWantAgent(wantAgentInfo, getWantAgentCallback); } catch (err) { console.error(`getWantAgent failed! ${err.code} ${err.message}`); } ``` ## 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.info(`getWantAgent failed, code: ${JSON.stringify(err.code)}, message: ${JSON.stringify(err.message)}`); } else { wantAgentData = data; } // cancel callback let cancelCallback = (err: BusinessError, data: void) => { if (err) { console.error(`cancel failed! ${err.code} ${err.message}`); } else { console.info(`cancel ok!`); } } try { wantAgent.cancel(wantAgentData, cancelCallback); } catch (err) { console.error(`cancel failed! ${err.code} ${err.message}`); } } try { wantAgent.getWantAgent(wantAgentInfo, getWantAgentCallback); } catch (err) { console.error(`getWantAgent failed! ${(err as BusinessError).code} ${(err as BusinessError).message}`); } ``` ## 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.info(`getWantAgent failed, code: ${JSON.stringify(err.code)}, message: ${JSON.stringify(err.message)}`); } else { wantAgentData = data; } try { wantAgent.cancel(wantAgentData).then((data) => { console.info('cancel ok!'); }).catch((err: BusinessError) => { console.error(`cancel failed! ${err.code} ${err.message}`); }); } catch (err) { console.error(`cancel failed! ${err.code} ${err.message}`); } } try { wantAgent.getWantAgent(wantAgentInfo, getWantAgentCallback); } catch (err) { console.error(`getWantAgent failed! ${(err as BusinessError).code} ${(err as BusinessError).message}`); } ``` ## 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 | TriggerInfo object. | | 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: ${JSON.stringify(err.code)}, message: ${JSON.stringify(err.message)}`); } else { wantAgentData = data; } // trigger callback let triggerCallback = (err: BusinessError, data: wantAgent.CompleteData) => { if (err) { console.error(`getUid failed! ${err.code} ${err.message}`); } else { console.info(`getUid ok! ${JSON.stringify(data)}`); } } try { wantAgent.trigger(wantAgentData, triggerInfo, triggerCallback); } catch (err) { console.error(`getUid failed! ${err.code} ${err.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, 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. The value **true** means that the two WantAgent objects are equal, and **false** means the opposite.| **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 objects 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. The value **true** means that the two WantAgent objects are equal, and **false** means the opposite.| **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.| For details about the error codes, see [Ability Error Codes](errorcode-ability.md). **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#properties) | No| No | Existing Want that is triggered. | | finalCode | number | No| No | Execution result of the triggering operation.
- In ability startup scenarios (where [OperationType](#operationtype) is set to **1**, **2**, or **3**), **finalCode** is **0** for a successful execution. For details about the value of **finalCode** returned in the case of execution failures, see [Ability Error Codes](errorcode-ability.md).
- In common event publish scenarios (where [OperationType](#operationtype) is set to **4**), **finalCode** is **0** for a successful execution. For details about the value of **finalCode** returned in the case of execution failures, see [Event Error Codes](../apis-basic-services-kit/errorcode-CommonEventService.md).| | finalData | string | No| No | Final data collected by the common event. | | extraInfo | Record\ | No|Yes | Extra information. |