HarmonyOS 鸿蒙Next 防截屏

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 防截屏

onPageShow(): void {  
let isPrivacyMode: boolean = true;
let windowClass: window.Window = window.findWindow(“test”);
let promise = windowClass.setWindowPrivacyMode(isPrivacyMode); // 设置防截屏录屏
promise.then(() => {
console.info(‘Succeeded in setting the window to privacy mode.’);
}).catch((err: BusinessError) => {
console.error(ErrorCode: ${err.code}, Message: ${err.message});
})
}

我在某一个page里面开启防截屏,获取window需要做些什么操作吗
let windowClass: window.Window = window.findWindow(“test”);


更多关于HarmonyOS 鸿蒙Next 防截屏的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

参考以下步骤和demo:

1.在module.json5文件中声明需要使用的 ohos.permission.PRIVACY_WINDOW 权限,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/declare-permissions-0000001820999665

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

2.示例代码 // windowUtils.ets

import window from '@ohos.window';
import common from '@ohos.app.ability.common';
export class windowUtils {
  static setWindowPrivacyModeInPage(context: common.UIAbilityContext,isFlag: boolean) {
    window.getLastWindow(context).then((lastWindow)=>{
      lastWindow.setWindowPrivacyMode(isFlag);
    })
  }
}
//页面
import common from '@ohos.app.ability.common';
import { windowUtils } from '../common/windowUtils';
@Entry
@Component
struct Index3 {
  @State message: string = 'Hello World';
  onPageShow(): void {
    windowUtils.setWindowPrivacyModeInPage(getContext(this) as common.UIAbilityContext, true);
  }
  onPageHide() {
    windowUtils.setWindowPrivacyModeInPage(getContext(this) as common.UIAbilityContext,false);
  }
  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .width('100%')
    }
    .height('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next 防截屏的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你好。

1.首先需要主模块申请权限:ohos.permission.PRIVACY_WINDOW
2.之后调用setWindowPrivacyMode禁止截屏/录屏。

import { BusinessError } from '[@kit](/user/kit).BasicServicesKit';

import { window } from "[@kit](/user/kit).ArkUI";

let isPrivacyMode: boolean = true;

let windowClass: window.Window = window.findWindow("test");

let promise = windowClass.setWindowPrivacyMode(isPrivacyMode); // 设置防截屏录屏

promise.then(() => {

  console.info('Succeeded in setting the window to privacy mode.');

}).catch((err: BusinessError) => {

  console.error(`ErrorCode: ${err.code},  Message: ${err.message}`);

})

HarmonyOS 鸿蒙Next 防截屏功能实现

HarmonyOS 鸿蒙Next系统本身并未直接提供全局性的防截屏API或设置,因为截屏功能通常由系统底层支持,并受用户权限控制。然而,开发者可以通过应用层面的技术手段来间接实现防截屏功能。

一种常见的方法是利用屏幕保护机制。开发者可以在应用的关键页面或敏感信息展示时,启动一个全屏的透明覆盖层,并监听系统的截屏事件。当检测到截屏操作时,可以立即改变覆盖层的内容或显示状态,使得截屏结果无法获取到真实信息。但需要注意的是,这种方法并不能完全防止所有截屏手段,特别是针对高级用户或使用了特殊截屏工具的情况。

另一种方法是利用鸿蒙系统的权限管理功能,限制应用被截屏的权限。但这种方法需要用户主动授予或拒绝权限,且不适用于所有场景。

此外,开发者还可以通过水印、模糊处理等技术手段来增加截屏后信息的识别难度,从而间接达到防截屏的效果。

总之,防截屏功能在技术上存在一定的局限性,开发者需要结合应用场景和用户需求来综合考虑实现方式。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部