HarmonyOS 鸿蒙Next中防窥保护自定义

HarmonyOS 鸿蒙Next中防窥保护自定义 大家好,请问防窥保护系统蒙层怎么修改?

9 回复

可以使用stack布局,设置一个自定义层组件,zIndex设置999,通过一个状态变量控制显示和隐藏。

更多关于HarmonyOS 鸿蒙Next中防窥保护自定义的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


背景知识:

可以使用 【防窥保护 】api - DlpAntiPeep。

isDlpAntiPeepSwitchOn – 判断是否开启防窥

通过 on(“dlpAntiPeep”) – 进行订阅,回调有一个 Callback<DlpAntiPeepStatus> DlpAntiPeepStatus 0-无人在窥视 1-有除机主以外的人在窥视设备屏幕

问题解决:

示例代码:

aboutToAppear(): void {
        dlpAntiPeep.isDlpAntiPeepSwitchOn().then((res:boolean)=>{
            //1、应用开启防窥
            if(res){
               //2、开启订阅监听
                dlpAntiPeep.on("dlpAntiPeep",(status:dlpAntiPeep.DlpAntiPeepStatus)=>{
                    if(status == dlpAntiPeep.DlpAntiPeepStatus.PASS){
                        //机主
                    }else{
                        //除机主外其他人
                    }
                })
            }
        })
    }

在检测到窥视时,使用一个自定义的View覆盖在当前界面上,以达到遮挡敏感信息的目的。

"requestPermissions": [
  {
    "name": "ohos.permission.DLP_GET_HIDE_STATUS"
  }
]

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

防窥保护的系统蒙层是由HarmonyOS系统提供的,应用无法直接修改其样式(如颜色、透明度、图案等),应用只能通过调用setAntiPeepMaskLayer接口在检测到窥视时拉起或移除系统蒙层

防窥保护的系统蒙层是系统级别的界面元素,其外观、透明度、覆盖范围等均由系统统一管理,应用开发者无法直接修改这些属性。应用只能通过 API 触发蒙层的显示或影响其显示逻辑。

在HarmonyOS Next中,可通过窗口属性实现防窥保护自定义。使用 windowStage.getMainWindow().setPrivacyMode(true) 开启系统级防窥,或通过 WindowFlags 设置。若需自定义遮罩,在 onWindowStageCreate 时监听窗口可见性变化,动态叠加ArkUI组件遮挡内容。

HarmonyOS Next 中“防窥保护”对应的系统级蒙层由系统统一绘制,应用无法直接修改其样式或内容。若需在应用内实现防窥效果,可使用窗口隐私模式 setWindowPrivacyMode(true),触发系统默认的遮挡行为,但无自定义蒙层接口。如需自定义遮挡内容,只能在应用界面内自行绘制一个全屏遮罩视图,并配合生命周期管理实现类似效果。

回到顶部