HarmonyOS 鸿蒙Next应用内防截屏功能

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

HarmonyOS 鸿蒙Next应用内防截屏功能 使用window模块的setWindowPrivacyMode方法设置窗口为隐私模式时,能否可以仅针对应用内的某一个页面生效?

3 回复

一些页面需要实现防截屏功能。首先需要在module.json5中申请隐私窗口权限。

然后在onPageShow()中获取当前窗口对象并设置隐私模式。

在退出页面的时候,在onPageHide()生命周期中取消隐私模式即可。

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5

试一下以下步骤能否满足需求

//module.json5文件中
{
"name" : 'ohos.permission.PRIVACY_WINDOW'
}
//EAbility文件中
onWindowStageCreate(windowStage: window.WindowStage): void {
  let windowClass: window.Window = windowStage.getMainWindowSync();
  
  // 获取应用主窗口
  AppStorage.setOrCreate("windowClass",windowClass);
}
//Index文件中
import { window } from '@kit.ArkUI';
import { BusinessError } from '@ohos.base';

@Entry
@Component
struct Index43 {
  private windowStage = AppStorage.get("windowStage") as window.WindowStage
  private windowClass = AppStorage.get("windowClass") as window.Window
  @State message: string = 'Hello World';

  build() {
    Row() {
      Column() {
        Text('禁止截屏')
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            let isPrivacyMode: boolean = true;
            try {
              this.windowClass.setWindowPrivacyMode(isPrivacyMode, (err: BusinessError) => {
                const errCode: number = err.code;
                if (errCode) {
                  console.error('Failed to set the window to privacy mode. Cause:' + JSON.stringify(err));
                  return;
                }
                console.info('Succeeded in setting the window to privacy mode.');
              });
            } catch (exception) {
              console.error('Failed to set the window to privacy mode. Cause:' + JSON.stringify(exception));
            }
          })
        Text('允许截屏')
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            let isPrivacyMode: boolean = false;
            try {
              this.windowClass.setWindowPrivacyMode(isPrivacyMode, (err: BusinessError) => {
                const errCode: number = err.code;
                if (errCode) {
                  console.error('Failed to set the window to privacy mode. Cause:' + JSON.stringify(err));
                  return;
                }
                console.info('Succeeded in setting the window to privacy mode.');
              });
            } catch (exception) {
              console.error('Failed to set the window to privacy mode. Cause:' + JSON.stringify(exception));
            }
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

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


页面onpageshow开启 onpagehide关闭 即可实现单页面防止截屏

HarmonyOS 鸿蒙Next应用内防截屏功能通常是通过系统API或特定的安全机制来实现的,旨在保护应用内的敏感信息不被用户截屏泄露。以下是对该功能实现方式的简要说明:

鸿蒙系统为开发者提供了相应的API接口,允许应用在运行时检测并阻止截屏操作。当检测到截屏行为时,应用可以立即采取措施,如隐藏敏感信息、弹出警告提示或记录相关日志等。

此外,鸿蒙系统还内置了一系列安全机制,以增强应用的安全性。这些机制包括但不限于应用沙箱、权限管理、数据加密等,它们共同协作,为应用提供了一个更为安全的运行环境。

在应用层面,开发者需要在关键页面或组件上实现防截屏逻辑。这通常涉及到监听系统广播、检查特定状态或调用系统API来判断是否有截屏行为发生。一旦检测到截屏行为,应用可以立即执行预设的防截屏措施。

需要注意的是,防截屏功能并不能完全杜绝截屏泄露风险,因为用户可能通过其他方式(如使用外部设备拍摄屏幕)来获取敏感信息。因此,开发者在设计应用时,还需要结合其他安全措施来共同保护用户数据的安全。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部