启动策略
场景介绍
当应用希望启动某个管控规则时,可以调用启动管控策略的接口。根据参数中传入的策略名,应用可以启动对应管控策略。一旦策略被创建并启用,系统将根据规则对用户的屏幕使用行为进行监管。
用户体验设计

业务流程

流程说明:
- 继承TimeGuardExtensionAbility,实现onStart方法,此步非必需。
- 调用启动管控策略的接口,拉起健康使用设备查询开发者是否已申请权限,以及用户是否授权。
- 若开发者没有权限或用户未授权,则抛出相应错误码。若开发者有权限且用户已授权,则解析参数中传入的策略名称,判断策略是否存在。
- 若策略不存在,则抛出相应错误码;若存在,则查询该策略是否正在执行。
- 若查询的策略未执行,则正常启动策略,并记录启动状态;否则,抛出策略已在执行中的错误码。
- 策略启动后,系统时间被设置为不可修改,管控发起应用被设置为不可卸载。
- 当到了管控生效的时间,管控开始生效,拉起extension进程,执行TimeGuardExtensionAbility的onStart回调。
接口说明
启动策略的关键接口如下表所示:
| 接口名 | 描述 |
|---|---|
| startGuardStrategy(strategyName: string): Promise<void> | 根据策略名称,启动其管控策略。 |
| onStart(strategyName: string): Promise<void> | 在策略启动时执行特定逻辑。 |
开发前提
启动管控策略需要申请用户授权,请先参考请求用户授权章节完成用户授权。
开发步骤
-
导入相关模块。
import { guardService, TimeGuardExtensionAbility } from '@kit.ScreenTimeGuardKit';import { hilog } from '@kit.PerformanceAnalysisKit';import { BusinessError } from '@kit.BasicServicesKit'; -
继承TimeGuardExtensionAbility,重写onStart回调。
export default class EntryAbility extends TimeGuardExtensionAbility {async onStart(strategyName: string): Promise<void> {hilog.info(0x0000, 'test --- onStart', strategyName);}} -
调用startGuardStrategy,启动管控策略。
async function testStartGuardStrategy() {try {const strategyName = "TestStrategy";await guardService.startGuardStrategy(strategyName);} catch (err) {const message = (err as BusinessError).message;const code = (err as BusinessError).code;hilog.error(0x0000, `ScreenTimeGuard:startGuardStrategy`, `startGuardStrategy failed with error code: ${code}, message: ${message}`);}}