1e41f4b71Sopenharmony_ci# WorkSchedulerExtensionContext (System API) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ciThe **WorkSchedulerExtensionContext** module, inherited from [ExtensionContext](../apis-ability-kit/js-apis-inner-application-extensionContext.md), provides a context environment for the WorkSchedulerExtensionAbility. 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ciThis module provides APIs for accessing the resources of a WorkSchedulerExtensionAbility. 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ci> **NOTE** 8e41f4b71Sopenharmony_ci> 9e41f4b71Sopenharmony_ci> The initial APIs of this module are supported since API version 14. Newly added APIs will be marked with a superscript to indicate their earliest API version. 10e41f4b71Sopenharmony_ci> 11e41f4b71Sopenharmony_ci> The APIs of this module can be used only in the stage model. 12e41f4b71Sopenharmony_ci> 13e41f4b71Sopenharmony_ci> The APIs provided by this module are system APIs. 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci## How to Use 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ciThe context is obtained through a WorkSchedulerExtensionAbility child class instance. 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci```ts 20e41f4b71Sopenharmony_ciimport { WorkSchedulerExtensionAbility, workScheduler } from from '@kit.BackgroundTasksKit'; 21e41f4b71Sopenharmony_ci 22e41f4b71Sopenharmony_ciclass MyWorkSchedulerExtensionAbility extends WorkSchedulerExtensionAbility { 23e41f4b71Sopenharmony_ci onWorkStart(workInfo: workScheduler.WorkInfo) { 24e41f4b71Sopenharmony_ci let WorkSchedulerExtensionContext = this.context; // Obtain the WorkSchedulerExtensionContext. 25e41f4b71Sopenharmony_ci } 26e41f4b71Sopenharmony_ci} 27e41f4b71Sopenharmony_ci``` 28e41f4b71Sopenharmony_ci 29e41f4b71Sopenharmony_ci## WorkSchedulerExtensionContext.startServiceExtensionAbility 30e41f4b71Sopenharmony_ci 31e41f4b71Sopenharmony_cistartServiceExtensionAbility(want: Want): Promise\<void> 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ciStarts a ServiceExtensionAbility. This API uses a promise to return the result. 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_ci**System capability**: SystemCapability.ResourceSchedule.WorkScheduler 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ci**Parameters** 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci| Parameter| Type| Mandatory| Description| 40e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 41e41f4b71Sopenharmony_ci| want | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | Yes| Want information about the target ability.| 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci**Returns** 44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_ci| Type| Description| 46e41f4b71Sopenharmony_ci| -------- | -------- | 47e41f4b71Sopenharmony_ci| Promise<void> | Promise that returns no value.| 48e41f4b71Sopenharmony_ci 49e41f4b71Sopenharmony_ci**Error codes** 50e41f4b71Sopenharmony_ci 51e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](../apis-ability-kit/errorcode-ability.md). 52e41f4b71Sopenharmony_ci 53e41f4b71Sopenharmony_ci| ID| Error Message| 54e41f4b71Sopenharmony_ci| ------- | -------- | 55e41f4b71Sopenharmony_ci| 201 | The application does not have permission to call the interface. | 56e41f4b71Sopenharmony_ci| 202 | The application is not system-app, can not use system-api. | 57e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 58e41f4b71Sopenharmony_ci| 16000001 | The specified ability does not exist. | 59e41f4b71Sopenharmony_ci| 16000002 | Incorrect ability type. | 60e41f4b71Sopenharmony_ci| 16000004 | Can not start invisible component. | 61e41f4b71Sopenharmony_ci| 16000005 | The specified process does not have the permission. | 62e41f4b71Sopenharmony_ci| 16000006 | Cross-user operations are not allowed. | 63e41f4b71Sopenharmony_ci| 16000008 | The crowdtesting application expires. | 64e41f4b71Sopenharmony_ci| 16000011 | The context does not exist. | 65e41f4b71Sopenharmony_ci| 16000012 | The application is controlled. | 66e41f4b71Sopenharmony_ci| 16000013 | The application is controlled by EDM. | 67e41f4b71Sopenharmony_ci| 16000019 | Can not match any component. | 68e41f4b71Sopenharmony_ci| 16000050 | Internal error. | 69e41f4b71Sopenharmony_ci| 16200001 | The caller has been released. | 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ci**Example** 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_ci```ts 74e41f4b71Sopenharmony_ciimport { WorkSchedulerExtensionAbility, workScheduler } from '@kit.BackgroundTasksKit'; 75e41f4b71Sopenharmony_ciimport { Want } from '@kit.AbilityKit'; 76e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 77e41f4b71Sopenharmony_ci 78e41f4b71Sopenharmony_cilet want : Want = { 79e41f4b71Sopenharmony_ci bundleName: 'com.example.workscheduler', 80e41f4b71Sopenharmony_ci abilityName: 'ServiceExtAbility' 81e41f4b71Sopenharmony_ci} 82e41f4b71Sopenharmony_ci 83e41f4b71Sopenharmony_ciexport default class MyWorkSchedulerExtensionAbility extends WorkSchedulerExtensionAbility { 84e41f4b71Sopenharmony_ci onWorkStart(workInfo: workScheduler.WorkInfo) { 85e41f4b71Sopenharmony_ci console.info(`onWorkStart, workInfo = ${JSON.stringify(workInfo)}`); 86e41f4b71Sopenharmony_ci // Start the corresponding service. 87e41f4b71Sopenharmony_ci this.context.startServiceExtensionAbility(want).then(() => { 88e41f4b71Sopenharmony_ci console.info('succeeded in starting ServiceExtensionAbility.'); 89e41f4b71Sopenharmony_ci }).catch ((err: BusinessError) => { 90e41f4b71Sopenharmony_ci console.error('failed to start ServiceExtensionAbility.'); 91e41f4b71Sopenharmony_ci }); 92e41f4b71Sopenharmony_ci } 93e41f4b71Sopenharmony_ci 94e41f4b71Sopenharmony_ci onWorkStop(workInfo: workScheduler.WorkInfo) { 95e41f4b71Sopenharmony_ci console.info(`onWorkStop, workInfo is ${JSON.stringify(workInfo)}`); 96e41f4b71Sopenharmony_ci } 97e41f4b71Sopenharmony_ci} 98e41f4b71Sopenharmony_ci``` 99e41f4b71Sopenharmony_ci 100e41f4b71Sopenharmony_ci## WorkSchedulerExtensionContext.stopServiceExtensionAbility 101e41f4b71Sopenharmony_ci 102e41f4b71Sopenharmony_cistopServiceExtensionAbility(want: Want): Promise\<void> 103e41f4b71Sopenharmony_ci 104e41f4b71Sopenharmony_ciStops a ServiceExtensionAbility. This API uses a promise to return the result. 105e41f4b71Sopenharmony_ci 106e41f4b71Sopenharmony_ci**System capability**: SystemCapability.ResourceSchedule.WorkScheduler 107e41f4b71Sopenharmony_ci 108e41f4b71Sopenharmony_ci**Parameters** 109e41f4b71Sopenharmony_ci 110e41f4b71Sopenharmony_ci| Parameter| Type| Mandatory| Description| 111e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 112e41f4b71Sopenharmony_ci| want | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | Yes| Want information about the target ability.| 113e41f4b71Sopenharmony_ci 114e41f4b71Sopenharmony_ci**Returns** 115e41f4b71Sopenharmony_ci 116e41f4b71Sopenharmony_ci| Type| Description| 117e41f4b71Sopenharmony_ci| -------- | -------- | 118e41f4b71Sopenharmony_ci| Promise<void> | Promise that returns no value.| 119e41f4b71Sopenharmony_ci 120e41f4b71Sopenharmony_ci**Error codes** 121e41f4b71Sopenharmony_ci 122e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](../apis-ability-kit/errorcode-ability.md). 123e41f4b71Sopenharmony_ci 124e41f4b71Sopenharmony_ci| ID| Error Message| 125e41f4b71Sopenharmony_ci| ------- | -------- | 126e41f4b71Sopenharmony_ci| 201 | The application does not have permission to call the interface. | 127e41f4b71Sopenharmony_ci| 202 | The application is not system-app, can not use system-api. | 128e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 129e41f4b71Sopenharmony_ci| 16000001 | The specified ability does not exist. | 130e41f4b71Sopenharmony_ci| 16000002 | Incorrect ability type. | 131e41f4b71Sopenharmony_ci| 16000004 | Can not start invisible component. | 132e41f4b71Sopenharmony_ci| 16000005 | The specified process does not have the permission. | 133e41f4b71Sopenharmony_ci| 16000006 | Cross-user operations are not allowed. | 134e41f4b71Sopenharmony_ci| 16000011 | The context does not exist. | 135e41f4b71Sopenharmony_ci| 16000050 | Internal error. | 136e41f4b71Sopenharmony_ci| 16200001 | The caller has been released. | 137e41f4b71Sopenharmony_ci 138e41f4b71Sopenharmony_ci**Example** 139e41f4b71Sopenharmony_ci 140e41f4b71Sopenharmony_ci```ts 141e41f4b71Sopenharmony_ciimport { WorkSchedulerExtensionAbility, workScheduler } from '@kit.BackgroundTasksKit'; 142e41f4b71Sopenharmony_ciimport { Want } from '@kit.AbilityKit'; 143e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 144e41f4b71Sopenharmony_ci 145e41f4b71Sopenharmony_cilet want : Want = { 146e41f4b71Sopenharmony_ci bundleName: 'com.example.workscheduler', 147e41f4b71Sopenharmony_ci abilityName: 'ServiceExtAbility' 148e41f4b71Sopenharmony_ci} 149e41f4b71Sopenharmony_ci 150e41f4b71Sopenharmony_ciexport default class MyWorkSchedulerExtensionAbility extends WorkSchedulerExtensionAbility { 151e41f4b71Sopenharmony_ci onWorkStart(workInfo: workScheduler.WorkInfo) { 152e41f4b71Sopenharmony_ci console.info(`onWorkStart, workInfo = ${JSON.stringify(workInfo)}`); 153e41f4b71Sopenharmony_ci } 154e41f4b71Sopenharmony_ci 155e41f4b71Sopenharmony_ci onWorkStop(workInfo: workScheduler.WorkInfo) { 156e41f4b71Sopenharmony_ci console.info(`onWorkStop, workInfo is ${JSON.stringify(workInfo)}`); 157e41f4b71Sopenharmony_ci // Stop the corresponding service. 158e41f4b71Sopenharmony_ci this.context.stopServiceExtensionAbility(want).then(() => { 159e41f4b71Sopenharmony_ci console.info('succeeded in stopping ServiceExtensionAbility.'); 160e41f4b71Sopenharmony_ci }).catch ((err: BusinessError) => { 161e41f4b71Sopenharmony_ci console.error('failed to stop ServiceExtensionAbility.'); 162e41f4b71Sopenharmony_ci }); 163e41f4b71Sopenharmony_ci } 164e41f4b71Sopenharmony_ci} 165e41f4b71Sopenharmony_ci``` 166