HarmonyOS 鸿蒙Next如何设置页面防止截屏

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

HarmonyOS 鸿蒙Next如何设置页面防止截屏

使用 setWindowPrivacyMode api进行防治截屏时。会catch

immersionBar.windowClass?.setWindowPrivacyMode(true).then(() => {
  console.info("setWindowPrivacyMode", 'Succeeded in setting the window to privacy mode.');
}).catch((err: BusinessError) => {
  console.error("setWindowPrivacyMode", `ErrorCode: ${err.code}, Message: ${err.message}`);
}) 

报错如下:

stack: Cannot get SourceMap info, dump raw stack: =====================Backtrace======================== #01 pc 0000000000062223 /system/lib64/platformsdk/libruntime.z.so #02 pc 000000000004e73b /system/lib64/platformsdk/libwindow_native_kit.z.so #03 pc 0000000000062ee3 /system/lib64/platformsdk/libruntime.z.so #04 pc 00000000000479eb /system/lib64/platformsdk/libace_napi.z.so #05 pc 0000000000012cbb /system/lib64/platformsdk/libuv.so #06 pc 00000000000172bb /system/lib64/platformsdk/libuv.so #07 pc 0000000000016c03 /system/lib64/platformsdk/libuv.so #08 pc 000000000001772b /system/lib64/platformsdk/libuv.so


更多关于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-V5

"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


之前看到一个老哥写的,我试过,是可以的

async function setWindowPrivacyModeTrue(context: common.UIAbilityContext) {
  let windowClass: window.Window = await window.getLastWindow(context)
  try {
    windowClass.setWindowPrivacyMode(true, (err: BusinessError) => {
      const errCode: number = err.code;
      if (errCode) {
        console.error('Failed to set the window to privacy mode. Cause:' + JSON.stringify(err));
        if (errCode == 201) {
          /*
          {
            "module": {
              "requestPermissions": [
                {
                  "name": "ohos.permission.INTERNET"
                }
              ],*/
          promptAction.showToast({
            message: `请在src/main/module.json5添加权限 "name": "ohos.permission.PRIVACY_WINDOW"`,
            duration: 2000,
            bottom: '500lpx'
          });
        }
        return;
      }
      promptAction.showToast({
        message: `已开启 防截屏录屏`,
        duration: 2000,
        bottom: '500lpx'
      });
      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));
  }
}

在HarmonyOS(鸿蒙)系统中,设置页面防止截屏的功能通常涉及到系统级的安全设置和应用层面的权限管理。以下是根据鸿蒙系统特性,直接针对如何设置页面防止截屏的简要说明:

鸿蒙系统本身并未提供直接的、用户可配置的选项来全局禁止截屏功能。截屏功能通常由系统控制,且大多数应用无法直接干预系统的截屏行为。然而,对于特定的敏感页面或内容,开发者可以在应用层面采取措施:

  1. 应用内防截屏逻辑:开发者可以在应用中实现防截屏逻辑,如检测截屏操作并覆盖屏幕内容,但这需要深入的应用开发和可能的系统级权限,且效果有限,因为高级用户或root设备可能绕过这些限制。

  2. 敏感信息提示:在显示敏感信息时,应用可以显示提示信息,告知用户该页面禁止截屏,以此作为间接的防护措施。

  3. 使用安全输入控件:对于密码等敏感输入,使用系统提供的安全输入控件,这些控件通常不会响应截屏操作。

请注意,这些措施主要针对应用层面的防护,而非系统全局设置。如果开发者需要在应用中实现更严格的防截屏机制,可能需要深入定制开发,并考虑与鸿蒙系统的安全框架集成。

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

回到顶部