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

为保护未成年人的上网环境,预防未成年人沉迷网络,帮助未成年人培养积极健康的用网习惯,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.mzph.cn/diannao/62257.shtml

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

相关文章

linux基础2

声明&#xff01; 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&#…

鸿蒙千帆启新程,共绘数字生态蓝图

华为的鸿蒙千帆起计划&#xff1a;共筑数字未来&#xff0c;学习华为创新之路 在当今全球科技竞争日益激烈的背景下&#xff0c;华为作为中国科技企业的代表&#xff0c;正通过其自主创新的鸿蒙系统&#xff0c;引领一场移动应用生态的变革。鸿蒙千帆起计划&#xff0c;作为华…

Qt-系统相关(2)多线程网络

Qt多线程 在 Qt 中&#xff0c;多线程的处理⼀般是通过 QThread类 来实现。 QThread 代表⼀个在应⽤程序中可以独⽴控制的线程&#xff0c;也可以和进程中的其他线程共享数据。 QThread 对象管理程序中的⼀个控制线程。 QThread 常⽤ API&#xff1a; 使用线程 关于创建线程…

永久免费的PDF万能水印删除工具

永久免费的PDF万能水印删除工具 1.简介 PDF万能水印删除工具&#xff0c;可以去除99.9%的PDF水印。例如&#xff1a;XObject水印&#xff08;含图片水印&#xff09;、文本水印、绘图水印/曲线水印、注释水印、工件水印、剪切路径水印等等。本软件是永久免费&#xff0c;无有…

华三(HCL)和华为(eNSP)模拟器共存安装手册

接上章叙述&#xff0c;解决同一台PC上同时部署华三(HCL)和华为(eNSP&#xff09;模拟器。原因就是华三HCL 的老版本如v2及以下使用VirtualBox v5版本&#xff0c;可以直接和eNSP兼容Oracle VirtualBox&#xff0c;而其他版本均使用Oracle VirtualBox v6以上的版本&#xff0c;…

深度理解进程的概念(Linux)

目录 一、冯诺依曼体系 二、操作系统(OS) 设计操作系统的目的 核心功能 系统调用 三、进程的概念与基本操作 简介 查看进程 通过系统调用获取进程标识符 通过系统调用创建进程——fork() 四、进程的状态 操作系统中的运行、阻塞和挂起 理解linux内核链表 Linux的进…

SQLite 管理工具 SQLiteStudio 3.4.5 发布

SQLiteStudio 3.4.5 版本现已发布&#xff0c;它带来了大量的 bug 修复&#xff0c;并增加了一些小功能。SQLiteStudio 是一个跨平台的 SQLite 数据库的管理工具。 具体更新内容包括&#xff1a; 现在可以使用 Collations Editor 窗口在数据库中注册 Extension-based collatio…

非常简单实用的前后端分离项目-仓库管理系统(Springboot+Vue)part 2

七、创建前端项目 你下载了nodejs吗&#xff1f;从cn官网下载&#xff1a;http://nodejs.cn/download/&#xff0c;或者从一个国外org网站下载&#xff0c;选择自己想要的版本https://nodejs.org/download/release/&#xff0c;双击下载好的安装文件&#xff0c;选择安装路径安…

继续完善wsl相关内容:基础指令

文章目录 前言一、我们需要安装wsl,这也是安装docker desktop的前提,因此我们在这篇文章里做了介绍:二、虽然我们在以安装docker desktop为目的时,不需要安装wsl的分发(distribution),但是装一个分发也是有诸多好处的:三、在使用wsl时,不建议把东西直接放到系统里,因…

20241124 Typecho 视频插入插件

博文免不了涉及到视频插入这些,网上的插件都或多或少的比较重,和Typecho的风格不搭配 后面就有了DPlay插件精简而来的VideoInsertion插件 VideoInsertion: Typecho 视频插入插件 目录结构 rockhinlink-ht2:/var/www/html/typecho/usr/plugins/VideoInsertion$ tree -h [4.…

css:项目

这是一个完整的网站制作的流程 美工会先制作一个原型图&#xff1a; 原型图写的不详细&#xff0c;就是体现一个网页大致的布局 然后美工再做一个psd样例图片 然后再交给程序员 项目 模块化开发&#xff1a;把代码的不同的样式封装起来&#xff0c;需要用到相同样式的标签就…

Qt桌面应用开发 第九天(综合项目一 飞翔的鸟)

目录 1.鸟类创建 2.鸟动画实现 3.鼠标拖拽 4.自动移动 5.右键菜单 6.窗口透明化 项目需求&#xff1a; 实现思路&#xff1a; 创建项目导入资源鸟类创建鸟动画实现鼠标拖拽实现自动移动右键菜单窗口透明化 1.鸟类创建 ①鸟类中包含鸟图片、鸟图片的最小值下标和最大值…

网络安全期末复习

第1章 网络安全概括 &#xff08;1&#xff09;用户模式切换到系统配置模式&#xff08;enable&#xff09;。 &#xff08;2&#xff09;显示当前位置的设置信息&#xff0c;很方便了解系统设置&#xff08;show running-config&#xff09;。 &#xff08;3&#xff09;显…

使用Python实现自动化邮件通知:当长时程序运行结束时

使用Python实现自动化邮件通知&#xff1a;当长时程序运行结束时 前提声明 本代码仅供学习和研究使用&#xff0c;不得用于商业用途。请确保在合法合规的前提下使用本代码。 目录 引言项目背景项目设置代码分析 导入所需模块定义邮件发送函数发送邮件 实现步骤结语全部代码…

Python学习35天

# 定义父类 class Computer: CPUNone MemoryNone diskNone def __init__(self,CPU,Memory,disk): self.disk disk self.Memory Memory self.CPU CPU def get_details(self): return f"CPU:{self.CPU}\tdisk:{self.disk}\t…

Opencv+ROS实现摄像头读取处理画面信息

一、工具 ubuntu18.04 ROSopencv2 编译器&#xff1a;Visual Studio Code 二、原理 图像信息 ROS数据形式&#xff1a;sensor_msgs::Image OpenCV数据形式&#xff1a;cv:Mat 通过cv_bridge()函数进行ROS向opencv转换 cv_bridge是在ROS图像消息和OpenCV图像之间进行转…

LAMP环境的部署

一、软件安装介绍 在Linux系统中安装软件有rpm安装、yum安装、源码安装等方法&#xff0c;在这里主要给大家介绍 yum 安装&#xff0c;这是一种最简单方便的一种安装方法。 YUM&#xff08;Yellow dog Upadate Modifie&#xff09;是改进版的 RPM 管理器&#xff0c;很好地解…

『VUE』elementUI dialog的子组件created生命周期不刷新(详细图文注释)

目录 1. 测试代码分析令人迷惑的效果 分析原因解决方法 如何在dialog中反复触发created呢?总结 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 主要是在做表单的时候想要有一个编辑表单在dialog弹窗中出现,同时dialog调用的封装的…

项目实战:基于深度学习的人脸表情识别系统设计与实现

大家好&#xff0c;人脸表情识别是计算机视觉领域中的一个重要研究方向&#xff0c;它涉及到对人类情感状态的理解和分析。随着深度学习技术的发展&#xff0c;基于深度学习的人脸表情识别系统因其高精度和强大的特征学习能力而受到广泛关注。本文旨在探讨基于深度学习的人脸表…

QChart数据可视化

目录 一、QChart基本介绍 1.1 QChart基本概念与用途 1.2 主要类的介绍 1.2.1 QChartView类 1.2.2 QChart类 1.2.3QAbstractSeries类 1.2.4 QAbstractAxis类 1.2.5 QLegendMarker 二、与图表交互 1. 动态绘制数据 2. 深入数据 3. 缩放和滚动 4. 鼠标悬停 三、主题 …