鸿蒙6应用内集成防窥保护

app 内集成场景

支持应用根据屏幕窥视状态保护机主隐私,如拉起系统级蒙层遮盖窗口,非机主状态下不进行个性化推荐,隐藏浏览记录、支付记录、收藏记录等敏感信息。其中系统使用智能判断将长期通过人脸解锁手机的人作为防窥保护的机主

首先在 module.json5 申请权限
json 复制代码
 "requestPermissions": [
      {
        "name": "ohos.permission.DLP_GET_HIDE_STATUS"
      }
    ],
在设置/隐私和安全/防窥保护/打开 app 的权限

dlpAntiPeep.isDlpAntiPeepSwitchOn();接口可以返回当前是否开启了 app 权限 返回值为Promise<boolean>

typescript 复制代码
Button("click")
  .fontSize(100)
  .onClick(async (event: ClickEvent) => {
    const isOpen = await dlpAntiPeep.isDlpAntiPeepSwitchOn();
    if (isOpen) {
      this.getUIContext().getPromptAction().showToast({
        message: `开启防窥保护`,
      });
    } else {
      this.getUIContext().getPromptAction().showToast({
        message: `关闭防窥保护`,
      });
    }
  });
监听方式实现(推荐)
typescript 复制代码
// 监听的回调函数
dlpCallback(dlpAntPeepStatus:dlpAntiPeep.DlpAntiPeepStatus){
    if(dlpAntPeepStatus == dlpAntiPeep.DlpAntiPeepStatus.HIDE){
      // 表示有人窥屏 可以在里面实现相应的业务逻辑
    }
    if(dlpAntPeepStatus == dlpAntiPeep.DlpAntiPeepStatus.PASS){
      //表示没人窥屏
    }
  }

// 在aboutToAppear生命周期中设置监听
aboutToAppear(): void {
try {
    dlpAntiPeep.on('dlpAntiPeep',this.dlpCallback)
}catch (e){
    hilog.error(0x0001,'[dlpAntiPeep err]',`message:${e.message}`)
}
}
主动监听触发
typescript 复制代码
Button("click")
  .fontSize(100)
  .onClick((event: ClickEvent) => {
    // 该接口用于获取当前窥屏状态
    const res = dlpAntiPeep.getDlpAntiPeepInfo();
    // 返回值可以用枚举值来表示
    if (res == dlpAntiPeep.DlpAntiPeepStatus.PASS) {
      this.getUIContext().getPromptAction().showToast({
        message: `没人窥屏`,
      });
    }
    if (res == dlpAntiPeep.DlpAntiPeepStatus.HIDE) {
      this.getUIContext().getPromptAction().showToast({
        message: `有人在窥屏`,
      });
    }
  });
实战案例
typescript 复制代码
import { dlpAntiPeep } from '@kit.DeviceSecurityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { BulletChat } from '@shuishenhuole/bulletchat';

@Entry
@ComponentV2
struct Index {
  @Local isDip:boolean = false

  callback(dlpAntPeepStatus:dlpAntiPeep.DlpAntiPeepStatus){
    if(dlpAntPeepStatus == dlpAntiPeep.DlpAntiPeepStatus.HIDE){
      // 可以使用当前的状态变量也可以使用持久化的变量 根据业务代码实现逻辑
      this.isDip = true
    }
    if(dlpAntPeepStatus == dlpAntiPeep.DlpAntiPeepStatus.PASS){
    }
  }

  aboutToAppear(): void {
    try {
      // bind防止this丢失 也可以直接使用箭头函数
      dlpAntiPeep.on('dlpAntiPeep',this.callback.bind(this))

    // 箭头函数写法
    //       dlpAntiPeep.on('dlpAntiPeep',(dlpAntPeepStatus:dlpAntiPeep.DlpAntiPeepStatus)=>{
    //     if(dlpAntPeepStatus == dlpAntiPeep.DlpAntiPeepStatus.HIDE){
    //       // 可以使用当前的状态变量也可以使用持久化的变量 根据业务代码实现逻辑
    //       this.isDip = true
    //     }
    //     if(dlpAntPeepStatus == dlpAntiPeep.DlpAntiPeepStatus.PASS){
    //     }
    //   })


    }
    catch (err) {
      hilog.error(0x0002,'dlpAntiPeep on error',`message:${err.message}`)
    }
  }

  build() {
    Flex({
      justifyContent:FlexAlign.Center,
      alignItems:ItemAlign.Center
    }) {
      if(this.isDip){
        // BulletChat为我的开源组件(需要>=2.0.2版本)
        // ohpm install @shuishenhuole/bulletchat
        BulletChat({
          text:"看看看就知道窥屏",
          desc:"desc",
          title:"title",
          OpenLink:"openlink",
          AutoLandScape:false,
          fontOption:{
            fontSize:75,
            textShadow:{
              radius:20,
              color:Color.Pink
            },
            marqueeOptions:{
              start:true,
              step:10
            }
          }
        })
          .onClick(()=>{
            this.isDip = false
          })
      }else{
        Column(){
          Text("假设这是一个见不得人的app")
            .fontWeight(FontWeight.Bold)
          Text("power by shuishenhuole")
            .fontWeight(FontWeight.Bolder)
        }
      }
    }
    .height('100%')
    .width('100%')
  }
}
相关推荐
Flutter_OH16 小时前
Flutter OHOS 三方库与插件适配相关问题
harmonyos
Flutter_OH17 小时前
Flutter OHOS ohos应用编译相关问题
harmonyos
31087487620 小时前
0028.配置windows的共享目录让ubuntu使用
ubuntu·windows共享文件夹
马剑威(威哥爱编程)20 小时前
【共创稿事节】HarmonyOS 7 Agent 开发实战 01:云端大模型 API 接入底座
华为·harmonyos
万物智能信息科技21 小时前
人体感应芯片PIR模块驱动开发—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
驱动开发·嵌入式硬件·华为·开源·harmonyos
这个人懒得名字都没写21 小时前
Ubuntu 24.04修改源
ubuntu
m0_738185821 天前
Flutter 鸿蒙化实战:sqflite 适配 OpenHarmony,本地 SQLite 数据库
flutter·华为·harmonyos·鸿蒙
马剑威(威哥爱编程)1 天前
【共创稿事节】HarmonyOS 7 Agent 开发实战 02:Agent 工程脚手架与对话 UI 骨架
华为·harmonyos
承渊政道1 天前
Linux网络学习【TCP Socket编程实战:connect的断线重连与客户端访问Linux验证】
linux·网络·学习·ubuntu·tcp·socket编程
打工仔折腾 AI1 天前
鸿蒙平板远控电脑实测:ToDesk蓝牙键鼠、双模式鼠标与跨端剪贴板落地记录
人工智能·后端·python·性能优化·计算机外设·电脑·harmonyos