修改策略
场景介绍
当用户希望调整现有的屏幕时间守护规则时,可以调用更新管控策略的接口。我们kit支持根据参数中传入的策略名以及修改策略的方案,用户可以修改各种策略,如调整各个应用的停用起止时间。一旦修改完成并保存,系统将根据新的规则对用户的屏幕使用行为进行管控。
业务流程

流程说明:
- 应用调用更新管控策略的接口时,会拉起健康使用设备查询本应用是否已申请权限,以及用户是否对本应用授权。
- 若没有权限,则抛出相应错误码;若有权限,则解析参数中传入的策略,并判断策略是否有效、是否存在。
- 若策略有效,则记录到本地数据库,策略完成修改;否则,抛出相应错误码。
- 更新管控策略的策略名需和当前已有的策略一致,否则会抛出策略不存在错误。
接口说明
修改策略的关键接口如下表所示:
| 接口名 | 描述 |
|---|---|
| updateGuardStrategy(strategyName: string, guardStrategy: GuardStrategy): Promise<void> | 修改屏幕时间管控策略。 |
开发前提
修改管控策略需要申请用户授权,请先参考请求用户授权章节完成用户授权。
开发步骤
-
导入相关模块。
import { guardService, appPicker } from '@kit.ScreenTimeGuardKit';import { hilog } from '@kit.PerformanceAnalysisKit';import { BusinessError } from '@kit.BasicServicesKit'; -
调用updateGuardStrategy,修改管控策略。
@Entry@Componentstruct TestPage {build() {Column() {Button("TestUpdateGuardStrategy").onClick(async () => {try {// 先调用startAppPicker获取相应应用的tokenconst tokens = await appPicker.startAppPicker(this.getUIContext().getHostContext(), { appTokens: [] });const strategyName = "TestStrategy";const time: guardService.TimeStrategy = {type: guardService.TimeStrategyType.START_END_TIME_TYPE,startTime: "08:00",endTime: "19:00",repeat: [1,2,3]}const info: guardService.AppInfo = {appTokens: tokens}const strategy: guardService.GuardStrategy = {name: strategyName,timeStrategy: time,appInfo: info,appRestrictionType: guardService.RestrictionType.BLOCKLIST_TYPE}await guardService.updateGuardStrategy(strategyName, strategy);} catch (err) {const message = (err as BusinessError).message;const code = (err as BusinessError).code;hilog.error(0x0000, `ScreenTimeGuard:updateGuardStrategy`, `updateGuardStrategy failed with error code: ${code}, message: ${message}`);}})}}}