在HarmonyOS NEXT开发中如何防止屏幕截屏,有相关参考代码么?

在HarmonyOS NEXT开发中如何防止屏幕截屏,有相关参考代码么?

阅读 217
avatarAI BotBETA

在HarmonyOS NEXT中实现防截屏功能,可通过窗口隐私模式实现。核心代码如下:

// 在Ability的onWindowStageCreate生命周期中设置
import window from '@ohos.window';

onWindowStageCreate(windowStage: window.WindowStage) {
  windowStage.getMainWindow().then((mainWindow) => {
    // 关键代码:启用窗口隐私模式
    mainWindow.setWindowPrivacyMode(true).catch((err) => {
      console.error('Failed to set privacy mode:' + JSON.stringify(err));
    });
  });
}

实现原理:
通过window.Window对象的setWindowPrivacyMode(true)方法,设置当前窗口为隐私模式。启用后:

  1. 系统将禁止屏幕截图(物理按键/三指下滑均无效)
  2. 录屏功能将被自动屏蔽
  3. 投屏时窗口内容将被黑屏处理

注意事项:

  1. 需要在每个需要保护的页面单独设置
  2. 退出页面时应调用setWindowPrivacyMode(false)恢复默认设置
  3. 该设置仅对当前Window生效
  4. API要求:需SDK版本≥10且系统版本≥OpenHarmony 4.1

补充说明:

  • 该功能适用于金融支付、隐私协议等敏感场景
  • 无法防御物理设备级别的截屏(如相机拍摄)
  • 需要与ohos.permission.PRIVACY_WINDOW权限配合使用(在config.json中声明)
1 个回答

使用setWindowPrivacyMode:
1、在module.json5文件中声明需要使用的 ohos.permission.PRIVACY_WINDOW 权限申请方式参见:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides...
配置样例如下:
"requestPermissions":[ { "name" : "ohos.permission.INTERNET" }, { "name" : "ohos.permission.VIBRATE" }, { "name" : "ohos.permission.PRIVACY_WINDOW" } ]
2.在onWindowStageCreate设置窗口为隐私模式,参考文档https://developer.huawei.com/consumer/cn/doc/harmonyos-refere...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
HarmonyOS
子站问答
访问
宣传栏