HarmonyOS 如何才能实现口令输入界面可以被截屏或者录屏

如何才能 实现 口令输入界面可以被截屏或者录屏?

HarmonyOS
2024-12-25 12:40:40
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

参考示例如下:

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"
  }
],
分享
微博
QQ
微信
回复
2024-12-25 15:01:43
相关问题
HarmonyOS 不被或者如何实现
53浏览 • 1回复 待解决
防止屏幕或者
679浏览 • 1回复 待解决
如何、投
2020浏览 • 1回复 待解决
HarmonyOS 如何禁用
255浏览 • 1回复 待解决
HarmonyOS 如何禁止
567浏览 • 1回复 待解决
HarmonyOS 如何
285浏览 • 1回复 待解决
HarmonyOS 如何设置放
575浏览 • 1回复 待解决
dayu200开发板如何或者
310浏览 • 0回复 待解决
HarmonyOS 安全键盘输入问题
346浏览 • 1回复 待解决
HarmonyOS如何实现当前禁止
286浏览 • 0回复 待解决