参考示例如下:import window from '@ohos.window'; import { abilityAccessCtrl, common, Permissions, UIAbility } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; function reqPermissionsFromUser(permissions: Array<Permissions>, context: common.UIAbilityContext): Promise<boolean> { let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager(); return new Promise((resolve, reject) => { // requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗 atManager.requestPermissionsFromUser(context, permissions).then((data) => { let grantStatus: Array<number> = data.authResults; let length: number = grantStatus.length; for (let i = 0; i < length; i++) { if (grantStatus[i] === 0) { // 用户授权,可以继续访问目标操作 resolve(true) return } else { // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限 resolve(false) return; } } // 授权成功 }).catch((err: BusinessError) => { console.error(`Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`); reject(false) return }) }) } @Entry @Component struct PagePrivacy { setPrivacy(status: boolean) { window.getLastWindow(getContext(this)).then((window) => { window.setWindowPrivacyMode(status) }) } async aboutToAppear() { const permissions: Array<Permissions> = ['ohos.permission.PRIVACY_WINDOW']; // 授权 const context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; let result = await reqPermissionsFromUser(permissions, context); if (!result) { console.error('result is null') return } } aboutToDisappear(): void { } build() { Column() { Button("设置防截屏").onClick(() => { this.setPrivacy(true) }) Button("取消防截屏").onClick(() => { this.setPrivacy(false) }) } .backgroundColor("#ffde8242") .height('100%') .width('100%') } }权限配置:"requestPermissions": [ { "name": "ohos.permission.PRIVACY_WINDOW", "usedScene": { "when": "always" }, "reason": "$string:app_name" } ],
参考示例如下:
权限配置: