关闭系统的未成年人模式
===========

#### 场景介绍

系统的未成年人模式已开启。用户打开应用，在应用内关闭系统未成年人模式。

应用可调用系统的未成年人模式关闭接口[leadToTurnOffMinorsMode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/account-api-minorsprotection#leadtoturnoffminorsmode)，验证家长密码后关闭系统的未成年人模式。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/ab/v3/LAB_sZliTeKfFMDnu4IbGg/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260612T073549Z&HW-CC-Expire=86400&HW-CC-Sign=B55F3BC6274B123421B4B60C83AD18A1F0769B31EB6057B4DECE2E18B596AC7C)

用户在应用内操作时，预期可能是关闭应用的未成年人模式，而非关闭整个系统的未成年人模式（其他应用/元服务的未成年人模式也会随之关闭）。如果开发者选择这种接入方式，建议在界面上告知用户即将关闭系统的未成年人模式。

#### 业务流程

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/6e/v3/KfGojmnQQKC2FqX9hK-J1A/zh-cn_image_0000002625188423.png?HW-CC-KV=V1&HW-CC-Date=20260612T073549Z&HW-CC-Expire=86400&HW-CC-Sign=6FA47357DE4B52B6238BE95F5137DA15371A7D2BC34785507AA331EA664090F5)

流程说明：

1.  用户打开应用时，应用通过订阅[系统未成年人模式公共事件](#事件说明)感知未成年人模式的状态变化。可以调用[getMinorsProtectionInfoSync](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/account-api-minorsprotection#getminorsprotectioninfosync)或[getMinorsProtectionInfo](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/account-api-minorsprotection#getminorsprotectioninfo)获取系统未成年人模式信息。
    
2.  当系统未成年人模式已开启，且用户需要在应用内关闭未成年人模式时，应用可调用[leadToTurnOffMinorsMode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/account-api-minorsprotection#leadtoturnoffminorsmode)引导关闭系统未成年人模式流程，关闭整个系统的未成年人模式。
    

#### 接口说明

以下是关闭系统的未成年人模式相关接口说明，更多接口及使用方法请参见[API参考](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/account-api-minorsprotection)。

| 接口名 | 描述 |
| :-- | :-- |
| [getMinorsProtectionInfoSync](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/account-api-minorsprotection#getminorsprotectioninfosync)(): [MinorsProtectionInfo](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/account-api-minorsprotection#minorsprotectioninfo) | 同步接口，获取系统未成年人模式的开启状态，以及年龄段信息。 |
| [getMinorsProtectionInfo](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/account-api-minorsprotection#getminorsprotectioninfo)(): Promise<[MinorsProtectionInfo](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/account-api-minorsprotection#minorsprotectioninfo)\> | 异步接口，获取系统未成年人模式的开启状态，以及年龄段信息。 |
| [leadToTurnOffMinorsMode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/account-api-minorsprotection#leadtoturnoffminorsmode)(context: [common.Context](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-app-ability-common#context)): Promise<void> | 调用该方法进行关闭系统未成年人模式流程。 |

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/ea/v3/wuP6DZ5OSMqscocdkOb4pg/caution_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260612T073549Z&HW-CC-Expire=86400&HW-CC-Sign=EBC47A29B6535D68CA75D3DFC345D059D3DB21A5D780968900D1ACA1DA33D573)

1.  [leadToTurnOffMinorsMode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/account-api-minorsprotection#leadtoturnoffminorsmode)接口需在页面或自定义组件生命周期内调用。
    
2.  当未成年人模式开启时，当前设备的开发者调试模式会被禁用，开发者可以进入设置-系统-开发者选项，点击USB调试开关，会校验健康使用设备密码，校验成功后可解除开发者调试模式限制。
    
3.  如开发者重新开启USB调试开关后，发现DevEco Studio工具上hilog日志未恢复到断连之前，请执行“hdc shell hilog -G 16M”来扩大hilog日志缓存区，若hilog日志仍无法完全展示，可取出hilog日志本地查看。更多命令请参见[hilog](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/hilog)。
    
4.  在应用内调用开启或关闭系统未成年人模式接口，如应用需弹出toast或弹框告知用户“未成年人模式已开启或关闭”，须在接口执行完成之后，在接口的then方法里面弹出toast或弹框，否则可能出现因系统页面未完全关闭，导致toast无法正常展示的情况。
    
5.  如开发者需要频繁使用未成年人模式开启状态或者年龄段信息，建议在获取结果后进行缓存，并通过订阅[系统未成年人模式公共事件](#事件说明)来刷新未成年人模式开启状态或者年龄段信息，避免重复调用接口带来的性能损耗。
    
6.  当设备处于开机未解锁状态下，开发者调用[getMinorsProtectionInfoSync](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/account-api-minorsprotection#getminorsprotectioninfosync)接口时，其返回的minorsProtectionMode字段为false。
    

#### 事件说明

以下是系统未成年人模式开启或关闭发送的广播事件。

| 事件名称 | 值 | 描述 |
| :-- | :-- | :-- |
| [COMMON\_EVENT\_MINORSMODE\_ON](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/commoneventmanager-definitions#common_event_minorsmode_on12) | usual.event.MINORSMODE\_ON | 表示系统未成年人模式开启事件。 |
| [COMMON\_EVENT\_MINORSMODE\_OFF](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/commoneventmanager-definitions#common_event_minorsmode_off12) | usual.event.MINORSMODE\_OFF | 表示系统未成年人模式关闭事件。 |

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/94/v3/vyQ4pZdGSwSl2Zb0qhlbvw/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260612T073549Z&HW-CC-Expire=86400&HW-CC-Sign=45971190F7CCE82E59E8E1E42B1FA8EF4598D484C410B430218D611DB2C0CBB4)

未成年人模式开启事件触发时机：

主动开启系统未成年人模式（PC/2in1设备暂不支持从控制中心开启未成年人模式），当前设备会发送未成年人模式开启事件。

#### 开发前提

请先参考“开发准备”的[配置签名和指纹](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/account-sign-fingerprints)章节，通过自动签名方式完成签名信息的配置。请注意，该接口无需配置公钥指纹、Client ID，也无需申请账号权限。

#### 开发步骤

1.  导入[minorsProtection](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/account-api-minorsprotection)模块及相关公共模块。
    
    import { minorsProtection } from '@kit.AccountKit';
    import { hilog } from '@kit.PerformanceAnalysisKit';
    import { BusinessError } from '@kit.BasicServicesKit';
    
2.  订阅系统未成年人模式开启或关闭事件、获取未成年人模式的开启状态，以及年龄段信息请参考应用与系统联动切换未成年人模式章节的[开发步骤](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/account-system-minorsprotection#开发步骤)。
    
3.  当系统未成年人模式已开启，且用户主动关闭应用内未成年人模式时，应用需要调用[leadToTurnOffMinorsMode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/account-api-minorsprotection#leadtoturnoffminorsmode)引导用户关闭系统的未成年人模式。
    
    if (canIUse('SystemCapability.AuthenticationServices.HuaweiID.MinorsProtection')) {
      try {
        // 查询是否支持系统未成年人模式
        if (minorsProtection.supportMinorsMode()) {
          // 此示例为代码片段，实际需在自定义组件实例中使用，并传入有效的Context上下文对象
          minorsProtection.leadToTurnOffMinorsMode(this.getUIContext().getHostContext())
            .then(() => {
              // 接口调用完成，如需显示弹窗，请在此处处理
            })
            .catch((error: BusinessError<Object>) => {
              dealTurnOffAllError(error);
            });
        } else {
          hilog.info(0x0000, 'testTag',
            'The current device environment does not support the youth mode, please check the current device environment.');
        }
      } catch (error) {
        hilog.error(0x0000, 'testTag',
          \`Failed to invoke supportMinorsMode. errCode: ${error.code}, errMessage: ${error.message}\`);
      }
    } else {
      hilog.info(0x0000, 'testTag',
        'The current device does not support the invoking of the leadToTurnOffMinorsMode interface.');
    }
    
    function dealTurnOffAllError(error: BusinessError<Object>): void {
      hilog.error(0x0000, 'testTag', \`Failed to leadToTurnOffMinorsMode. Code: ${error.code}, message: ${error.message}\`);
    }