添加策略
====

#### 场景介绍

当管控应用希望创建新的屏幕时间守护规则时，可以调用添加管控策略的接口。根据参数中传入的策略设置指定应用的停用时间。一旦策略被创建并启用，系统将根据策略规则对用户的屏幕使用行为进行管控。

#### 业务流程

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/f2/v3/v3el1r89SMm8mYN5YNdZXA/zh-cn_image_0000002594669466.png?HW-CC-KV=V1&HW-CC-Date=20260612T073647Z&HW-CC-Expire=86400&HW-CC-Sign=22598F90523793FDC1211974C481F2ABC11061510A1561F0B6DAE17C1DD01CD4)

流程说明：

1.  应用调用添加管控策略的接口，拉起健康使用设备查询本应用是否已申请权限，以及用户是否已给本应用授权。
    
2.  若没有权限，则抛出相应错误码；若有权限，则解析参数中传入的策略，判断策略是否有效、是否重复、数量是否超限。
    
3.  若策略正常，则记录到本地数据库；否则，抛出相应错误码。
    

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/a2/v3/IomEhtNCQM-fkXN6-pef2g/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260612T073647Z&HW-CC-Expire=86400&HW-CC-Sign=859AC8FAF71A44BA9B758C10BFDB45C2186F8AFC7FA4BE5B59E030F9CBDD8798)

1.  管控策略可以设置为起止时间策略，表示策略在一天内配置的起始时间和结束时间内生效；也可以设置为总时长策略类型，表示一天内策略生效的总时长；也可以设置为共享时长策略类型，表示策略关联的所有应用共享同一可用时长配额。具体可参考[TimeStrategyType](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/screentimeguard-guardservice#timestrategytype) 。
    
2.  管控策略可以设置限制类型，按允许清单做限制表示对传入的应用之外的应用进行管控，按禁止清单做限制表示对传入的应用进行限制。具体可参考[RestrictionType](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/screentimeguard-guardservice#restrictiontype) 。
    
3.  管控策略可以设置一周内重复执行时间，支持填写含有1-7数字的number数组，表示在周一到周日的某些天重复执行。若不设置重复执行时间，则策略只执行一次。具体可参考[TimeStrategy](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/screentimeguard-guardservice#timestrategy) 。
    

#### 接口说明

添加策略的关键接口如下表所示：

| 接口名 | 描述 |
| :-- | :-- |
| [addGuardStrategy](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/screentimeguard-guardservice#addguardstrategy)(guardStrategy: [GuardStrategy](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/screentimeguard-guardservice#guardstrategy)): Promise<void> | 添加屏幕时间管控策略。 |

#### 开发前提

添加管控策略需要申请用户授权，请先参考[请求用户授权](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/screentimeguard-request-user-auth)章节完成用户授权。

#### 开发步骤

1.  导入相关模块。
    
    import { guardService } from '@kit.ScreenTimeGuardKit';
    import { hilog } from '@kit.PerformanceAnalysisKit';
    import { BusinessError } from '@kit.BasicServicesKit';
    
2.  定义屏幕时间管理策略。
    
    private guardStrategy: guardService.GuardStrategy = {
      name: 'GuardStrategy',
      timeStrategy: {
        type: guardService.TimeStrategyType.START\_END\_TIME\_TYPE,
        startTime: '19:00',
        endTime: '21:00',
        repeat: \[1, 2, 3, 4, 5, 6, 7\]
      },
      appInfo: { appTokens: \[\] }, // 可通过startAppPicker接口获取
      appRestrictionType: guardService.RestrictionType.BLOCKLIST\_TYPE
    };
    
3.  调用addGuardStrategy，添加屏幕时间管控策略。
    
    private async addStrategy(guardStrategy: guardService.GuardStrategy): Promise<void> {
      try {
        await guardService.addGuardStrategy(guardStrategy);
      } catch (error) {
        let err: BusinessError = error as BusinessError;
        hilog.error(0x0000, 'GuardService',
          \`addGuardStrategy failed, errCode is ${err.code}, errMessage is ${err.message}\`);
      }
    }