WorkSchedulerExtensionContext (System API)
The WorkSchedulerExtensionContext module, inherited from ExtensionContext, provides a context environment for the WorkSchedulerExtensionAbility.
This module directly serves as the context for WorkSchedulerExtension and provides the capability to access resources specific to WorkSchedulerExtensionAbility.
NOTE
The initial APIs of this module are supported since API version 10. Newly added APIs will be marked with a superscript to indicate their earliest API version.
The APIs of this module can be used only in the stage model.
The APIs provided by this module are system APIs.
How to Use
Obtain the context through a WorkSchedulerExtensionAbility child class instance.
import { WorkSchedulerExtensionAbility, workScheduler } from '@kit.BackgroundTasksKit';
class MyWorkSchedulerExtensionAbility extends WorkSchedulerExtensionAbility {
onWorkStart(workInfo: workScheduler.WorkInfo) {
let WorkSchedulerExtensionContext = this.context; // Obtain the WorkSchedulerExtensionContext.
}
}
WorkSchedulerExtensionContext.startServiceExtensionAbility13+
startServiceExtensionAbility(want: Want): Promise<void>
Starts a ServiceExtensionAbility. This API uses a promise to return the result.
System capability: SystemCapability.ResourceSchedule.WorkScheduler
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| want | Want | Yes | Information about the Want used for starting an ability. |
Return value
| Type | Description |
|---|---|
| Promise<void> | Promise that returns no value. |
Error codes
For details about the error codes, see Universal Error Codes and Ability Error Codes.
| ID | Error Message |
|---|---|
| 201 | The application does not have permission to call the interface. |
| 202 | The application is not system-app, can not use system-api. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
| 16000001 | The specified ability does not exist. |
| 16000002 | Incorrect ability type. |
| 16000004 | Cannot start an invisible component. |
| 16000005 | The specified process does not have the permission. |
| 16000006 | Cross-user operations are not allowed. |
| 16000008 | The crowdtesting application expires. |
| 16000011 | The context does not exist. |
| 16000012 | The application is controlled. |
| 16000013 | The application is controlled by EDM. |
| 16000050 | Internal error. |
| 16200001 | The caller has been released. |
Example
import { WorkSchedulerExtensionAbility, workScheduler } from '@kit.BackgroundTasksKit';
import { Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
let want : Want = {
bundleName: 'com.example.workscheduler',
abilityName: 'ServiceExtAbility'
}
export default class MyWorkSchedulerExtensionAbility extends WorkSchedulerExtensionAbility {
onWorkStart(workInfo: workScheduler.WorkInfo) {
console.info(`onWorkStart, workInfo = ${JSON.stringify(workInfo)}`);
// Start the corresponding service.
this.context.startServiceExtensionAbility(want).then(() => {
console.info('succeeded in starting ServiceExtensionAbility.');
}).catch ((err: BusinessError) => {
console.error('failed to start ServiceExtensionAbility.');
});
}
onWorkStop(workInfo: workScheduler.WorkInfo) {
console.info(`onWorkStop, workInfo is ${JSON.stringify(workInfo)}`);
}
}
WorkSchedulerExtensionContext.stopServiceExtensionAbility13+
stopServiceExtensionAbility(want: Want): Promise<void>
Stops a ServiceExtensionAbility. This API uses a promise to return the result.
System capability: SystemCapability.ResourceSchedule.WorkScheduler
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| want | Want | Yes | Information about the Want used for stopping an ability. |
Return value
| Type | Description |
|---|---|
| Promise<void> | Promise that returns no value. |
Error codes
For details about the error codes, see Universal Error Codes and Ability Error Codes.
| ID | Error Message |
|---|---|
| 201 | The application does not have permission to call the interface. |
| 202 | The application is not system-app, can not use system-api. |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
| 16000001 | The specified ability does not exist. |
| 16000002 | Incorrect ability type. |
| 16000004 | Cannot start an invisible component. |
| 16000005 | The specified process does not have the permission. |
| 16000006 | Cross-user operations are not allowed. |
| 16000011 | The context does not exist. |
| 16000050 | Internal error. |
| 16200001 | The caller has been released. |
Example
import { WorkSchedulerExtensionAbility, workScheduler } from '@kit.BackgroundTasksKit';
import { Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
let want : Want = {
bundleName: 'com.example.workscheduler',
abilityName: 'ServiceExtAbility'
}
export default class MyWorkSchedulerExtensionAbility extends WorkSchedulerExtensionAbility {
onWorkStart(workInfo: workScheduler.WorkInfo) {
console.info(`onWorkStart, workInfo = ${JSON.stringify(workInfo)}`);
}
onWorkStop(workInfo: workScheduler.WorkInfo) {
console.info(`onWorkStop, workInfo is ${JSON.stringify(workInfo)}`);
// Stop the corresponding service.
this.context.stopServiceExtensionAbility(want).then(() => {
console.info('succeeded in stopping ServiceExtensionAbility.');
}).catch ((err: BusinessError) => {
console.error('failed to stop ServiceExtensionAbility.');
});
}
}