【需求】
- 登录不允许截屏
- 验证码页不允许截屏
- 首页允许截屏
【API】
方式一:
- 当app只有一个窗口时,可以使用getLastWindow
ts
window.getLastWindow(context).then((lastWindow)=>{ lastWindow.setWindowPrivacyMode(flag) })
方式二:
当app存在多个窗口时
- 在EntryAbility中保存windowStage
ts
AppStorage.setOrCreate('windowStage', windowStage);
- 在登录页调
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%')
}
}
【效果图】
因为做的是防截屏功能,所以没有效果图~