未成年人模式护航,保障安全健康上网

news/2024/11/28 10:37:26/文章来源:https://www.cnblogs.com/HarmonyOSSDK/p/18573809

为保护未成年人的上网环境,预防未成年人沉迷网络,帮助未成年人培养积极健康的用网习惯,HarmonyOS SDK 提供未成年人模式功能,在华为设备上加强对面向未成年人的产品和服务的管理。

场景介绍(应用跟随系统未成年人模式状态变化)

1.查询系统状态:建议应用跟随系统未成年人模式状态切换,随系统一同开启或关闭未成年人模式。应用启动时可以查询系统的未成年人模式是否开启。未成年人模式开启时,应用应主动切换为未成年人模式。

2.感知系统状态切换:应用可通过订阅公共事件感知未成年人模式状态变化,应用进程存在时,如果用户切换系统的未成年人模式状态(开启或关闭),应用可主动跟随系统进行切换。

3.验证家长密码:当用户在调整应用内未成年人模式设置(如内容偏好等)时,应用可调用验证未成年人模式密码接口,让用户验证未成年人模式的家长密码,验证成功后可以进行调整。

开发步骤

1.准备:导入minorsProtection模块及相关公共模块。

import { minorsProtection } from '@kit.AccountKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { BusinessError, commonEventManager } from '@kit.BasicServicesKit';
// 以上引入的模块为当前场景的全量模块,请按照具体实现按需引入

2.感知系统状态切换:创建订阅者,订阅系统未成年人模式开启/关闭事件。推荐在应用Ability的onCreate生命周期中调用。

//订阅者信息。
let subscribeInfo: commonEventManager.CommonEventSubscribeInfo = {events: [commonEventManager.Support.COMMON_EVENT_MINORSMODE_ON,commonEventManager.Support.COMMON_EVENT_MINORSMODE_OFF]
};
let subscriber: commonEventManager.CommonEventSubscriber;//创建订阅者。
commonEventManager.createSubscriber(subscribeInfo).then((commonEventSubscriber: commonEventManager.CommonEventSubscriber) => {subscriber = commonEventSubscriber;//订阅公共事件。commonEventManager.subscribe(subscriber,(error: BusinessError, data: commonEventManager.CommonEventData) => {if (error) {this.dealCommonEventAllError(error);} else {if (data.event === commonEventManager.Support.COMMON_EVENT_MINORSMODE_ON) {// 订阅到开启事件,可以调用查询年龄段接口}if (data.event === commonEventManager.Support.COMMON_EVENT_MINORSMODE_OFF) {// 订阅到关闭事件,关闭当前应用的未成年人模式,刷新应用内容展示,取消年龄限制}}});}).catch((error: BusinessError) => {this.dealCommonEventAllError(error);});
dealCommonEventAllError(error: BusinessError): void {hilog.error(0x0000, 'testTag', `Failed to subscribe. Code: ${error.code}, message: ${error.message}`);
}

3.查询系统状态:开发者可选择以下一种方式获取未成年人模式的开启状态,以及年龄段信息。推荐在自定义组件的aboutToAppear生命周期或者应用Ability的onCreate生命周期中调用。

当应用期望立即获取结果时,推荐使用同步方式;当应用期望使用非阻塞的方式调用接口时,推荐使用Promise异步回调方式。

使用同步方式,调用getMinorsProtectionInfoSync获取未成年人模式的开启状态,以及年龄段信息。

if (canIUse('SystemCapability.AuthenticationServices.HuaweiID.MinorsProtection')) {const minorsProtectionInfo: minorsProtection.MinorsProtectionInfo =minorsProtection.getMinorsProtectionInfoSync();// 获取未成年人模式开启状态const minorsProtectionMode: boolean = minorsProtectionInfo.minorsProtectionMode;hilog.info(0x0000, 'testTag', 'Succeeded in getting minorsProtectionMode is: %{public}s',minorsProtectionMode.valueOf());// 未成年人模式已开启,获取年龄段信息if (minorsProtectionMode) {const ageGroup: minorsProtection.AgeGroup | undefined = minorsProtectionInfo.ageGroup;if (ageGroup) {hilog.info(0x0000, 'testTag', 'Succeeded in getting lowerAge is: %{public}s', ageGroup.lowerAge.toString());hilog.info(0x0000, 'testTag', 'Succeeded in getting upperAge is: %{public}s', ageGroup.upperAge.toString());}} else {// 未成年人模式未开启,建议应用跟随系统未成年人模式,展示正常内容}
} else {hilog.info(0x0000, 'testTag','The current device does not support the invoking of the getMinorsProtectionInfoSync interface.');
}

使用Promise异步回调方式,调用getMinorsProtectionInfo获取未成年人模式的开启状态,以及年龄段信息。

if (canIUse('SystemCapability.AuthenticationServices.HuaweiID.MinorsProtection')) {minorsProtection.getMinorsProtectionInfo().then((minorsProtectionInfo: minorsProtection.MinorsProtectionInfo) =&gt; {// 获取未成年人模式开启状态const minorsProtectionMode: boolean = minorsProtectionInfo.minorsProtectionMode;hilog.info(0x0000, 'testTag', 'Succeeded in getting minorsProtectionMode is: %{public}s',minorsProtectionMode.valueOf());// 未成年人模式已开启,获取年龄段信息if (minorsProtectionMode) {const ageGroup: minorsProtection.AgeGroup | undefined = minorsProtectionInfo.ageGroup;if (ageGroup) {hilog.info(0x0000, 'testTag', 'Succeeded in getting lowerAge is: %{public}s', ageGroup.lowerAge.toString());hilog.info(0x0000, 'testTag', 'Succeeded in getting upperAge is: %{public}s', ageGroup.upperAge.toString());}} else {// 未成年人模式未开启,建议应用跟随系统未成年人模式,展示正常内容}}).catch((error: BusinessError<object>) =&gt; {this.dealGetMinorsInfoAllError(error);});
} else {hilog.info(0x0000, 'testTag','The current device does not support the invoking of the getMinorsProtectionInfo interface.');
}
dealGetMinorsInfoAllError(error: BusinessError<object>): void {hilog.error(0x0000, 'testTag', `Failed to getMinorsProtectionInfo. Code: ${error.code}, message: ${error.message}`);
}

验证家长密码:未成年人模式开启时,如果用户需要调整应用内未成年人模式设置(如内容偏好等),可调用verifyMinorsProtectionCredential方法拉起验证未成年人模式的家长密码页面。

if (canIUse('SystemCapability.AuthenticationServices.HuaweiID.MinorsProtection')) {minorsProtection.verifyMinorsProtectionCredential(getContext(this)).then((result: boolean) =&gt; {hilog.info(0x0000, 'testTag', 'Succeeded in getting verify result is: %{public}s', result.valueOf());// 使用结果判断验密是否通过,执行后续流程}).catch((error: BusinessError<object>) =&gt; {this.dealVerifyAllError(error);});
} else {hilog.info(0x0000, 'testTag','The current device does not support the invoking of the verifyMinorsProtectionCredential interface.');
}
dealVerifyAllError(error: BusinessError<object>): void {hilog.error(0x0000, 'testTag', `Failed to verify. Code: ${error.code}, message: ${error.message}`);
}

了解更多详情>>

获取未成年人模式服务开发指导文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/842754.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle生成awr报告操作步骤

1、cmd命令窗口 以sysdba身份登录Oracle 2、执行@?/rdbms/admin/awrrpt命令,并选择报告类型为HTML。输入天数以选择生成报告的时间段,一般默认为最近7天。输入报告开始和结束时间对应的快照ID。输入报告名称,如awr.html,系统将自动生成并显示报告名。 3. 查看AWR报告。 AW…

聚焦银行业数智化转型,火山引擎数据飞轮系列白皮书重磅发布

随着金融科技的快速发展,银行业也在不断提升数字化水平。通过大数据、人工智能等技术的应用,银行可以更加精准地了解客户需求,提供个性化的金融产品和服务,还能降低运营成本,提升风险管理能力,创造更多业务价值。《金融科技发展规划(2022~2025年)》也明确指出,以加强金…

字节面试:聊聊 CAP 定理?哪些中间件是AP? 哪些是CP? 说说 为什么?

本文原文链接 文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 …

智能探针技术:实现可视、可知、可诊的主动网络运维策略

网络维护的重要性 网络运维是确保网络系统稳定、高效、安全运行的关键活动。在当今这个高度依赖信息技术的时代,网络运维的重要性不仅体现在技术层面,更关乎到企业运营的方方面面。网络运维具有保障网络的稳定性、提升网络运维性能、降低企业运营成本等多方面好处,是企业信息…

SSD:清华出品,可切换密集稀疏的大模型预训练加速方案 | ICML24

来源:晓飞的算法工程笔记 公众号,转载请注明出处论文: Exploring the Benefit of Activation Sparsity in Pre-training论文地址:https://arxiv.org/abs/2410.03440 论文代码:https://github.com/thunlp/moefication创新点研究了激活属性在预训练过程中的变化,发现Transfo…

hhdb数据库介绍(9-13)

计算节点特色功能 SQL流控 计算节点支持对高并发SQL语句进行自动的流量控制功能,可以自动识别高消耗SQL且限制同一时间内高消耗SQL执行的并发数和效率,从而稳定数据库服务。也提供查询入口使用户尽可能多的识别高消耗SQL语句并优化SQL以提升数据库整体服务性能。 当正在执行的…

国产!瑞芯微RK3576(八核@2.2GHz+6T NPU)工业开发板规格书

1 评估板简介 创龙科技TL3576-EVM是一款基于瑞芯微RK3576J/RK3576高性能处理器设计的四核ARM Cortex-A72 + 四核ARM Cortex-A53 + 单核ARM Cortex-M0国产工业评估板,Cortex-A72核心主频高达2.2GHz,Cortex-A53核心主频高达2.0GHz。评估板由核心板和评估底板组成,核心板CPU、R…

NocoBase 本周更新汇总:优化 REST API 数据源插件

本周更新包括:优化 REST API 数据源插件,支持在界面上批量激活插件等。汇总一周产品更新日志,最新发布可以前往我们的博客查看。 NocoBase 目前更新包括的版本更新包括三个分支:main ,next和 develop。main :截止目前最稳定的版本,推荐安装此版本。 next:包含即将发布的…

数据自动同步方案实施指南:企业如何实现高效数据流转?

数据自动同步是指通过技术手段实现数据在不同设备、系统或存储介质之间的自动更新和保持一致性的过程。随着企业业务不断扩大发展,数据传输和汇集已成为其业务链中的一个重要环节,会存在将不同服务器上的不同数据文件同步到同一台文件存储服务器上的场景需求。企业内部多台Wi…

PowerShell执行命令提示找不到驱动器。名为“xx”的驱动器不存在。

前言 问题截图 1. VSCode中提示错误2. PowerShell中提示错误,任何命令都提示此错误(排程变量命令)网上的解决方案 1. VSCode中提示,修改相关VSCode首选项设置2. 修改用户账户3. 重装软件VSCode4. 重装PowerShell 5. 等等乱七八糟的解决方案 最终解决方案 查看系统环境变量中…

VS Code 快捷方式所指的项目“Code.exe”已经更改或移动,因此该快捷方式无法正常工作

早上打开电脑,vscode是这样的图标了然后打不开,我就百度找个了这个博客解决了 找到文件路径C:\Users\*****\AppData\Local\Programs\Microsoft VS Code(安装路径),会发现多了一个名为“_”的文件夹,将该文件夹中所有文件复制到上一级目录\Microsoft VS Code中即可

《HelloGitHub》第 104 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣!简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。github.com/521xueweihan/HelloGitHub这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、Java、Go、C/C++、Swift...让你在短…