【HarmonyOS NEXT】实现防截屏功能

【需求】

  1. 登录不允许截屏
  2. 验证码页不允许截屏
  3. 首页允许截屏

【API】

方式一:

  1. 当app只有一个窗口时,可以使用getLastWindow
ts 复制代码
window.getLastWindow(context).then((lastWindow)=>{ lastWindow.setWindowPrivacyMode(flag) })

方式二:

当app存在多个窗口时

  1. 在EntryAbility中保存windowStage
ts 复制代码
AppStorage.setOrCreate('windowStage', windowStage);
  1. 在登录页调
ts 复制代码
windowStage.getMainWindowSync().setWindowPrivacyMode(flag)

【代码】

ts 复制代码
import { router, window } from '@kit.ArkUI'

@Entry
@Component
struct LoginPage {
  onPageShow(): void {
    this.setWindowPrivacyModeInPage(true)
  }

  onPageHide(): void {
    this.setWindowPrivacyModeInPage(false)
  }

  setWindowPrivacyModeInPage(flag: boolean) {
    const windowStage = AppStorage.get('windowStage') as window.WindowStage
    windowStage.getMainWindowSync().setWindowPrivacyMode(flag)
  }

  build() {
    Column({ space: 20 }) {
      Text('登录页').fontSize(30).padding({ top: 60 })
      Button('去验证码页').onClick(() => {
        router.replaceUrl({
          url: 'pages/Case/AntiScreenshot/CodePage'
        })
      })
      Button('去首页').onClick(() => {
        router.replaceUrl({
          url: 'pages/Case/AntiScreenshot/MainPage'
        })
      })
    }
    .height('100%')
    .width('100%')
  }
}

【效果图】

因为做的是防截屏功能,所以没有效果图~

相关推荐
2501_9445257616 分钟前
开源鸿蒙平台 KMP 三方库「KMPalette」适配全流程
华为·开源·harmonyos
2601_9494800617 分钟前
开源鸿蒙平台 CMP 三方库「skiko」适配全流程
华为·开源·harmonyos
OH_TPC27 分钟前
【鸿蒙优选三方库】@ohos/ijkplayer:B 站同源播放器,啥格式都能播
华为·harmonyos·鸿蒙
传奇开心果编程36 分钟前
组合优先开发范式:从汉字造字原理到声明式UI组件组合思想
android·flutter·ios·swiftui·移动开发·harmonyos·android jetpack
网络豆44 分钟前
开源鸿蒙平台 CMP 三方库「kmp-onboarding」适配全流程
华为·开源·harmonyos
网络豆1 小时前
开源鸿蒙平台 CMP 三方库「dotsindicator」适配全流程
华为·开源·harmonyos
resh_people1 小时前
开源鸿蒙平台 CMP 三方库「kmp-wheel-picker」适配全流程
华为·开源·harmonyos
腾讯端服务1 小时前
一码Duo端-Kuikly-iOS折叠屏新UI适配实践
android·ui·ios·kotlin·鸿蒙
2501_944521592 小时前
开源鸿蒙平台 KMP 三方库「BottomSheetNavigator3KMP」适配全流程
华为·开源·harmonyos
2501_944521592 小时前
开源鸿蒙平台 CMP 三方库「scroll-effects」适配全流程
华为·开源·harmonyos