HarmonyOS鸿蒙Next中隐私弹窗上的链接无法弹出一个新窗口

HarmonyOS鸿蒙Next中隐私弹窗上的链接无法弹出一个新窗口 自已设置的隐私弹窗上的链接无法弹出一个新窗口

5 回复

开发者你好,可以参考示例代码:用户协议与隐私政策弹窗示例代码

实现思路

  1. 通过bindSheet属性绑定用户协议与隐私政策半模态页面。
Column() {
  ... // 绑定bindSheet的组件
}
.alignItems(HorizontalAlign.Center)
.bindSheet($$this.isShow, this.agreementAndPolicy, {
  ... // 配置半模态页面的可选属性
})
.width(Constants.FULL_PERCENT)
.height(Constants.FULL_PERCENT)

@Builder
agreementAndPolicy(): void {
  ... // 自定义用户协议与隐私政策半模态页面
}
  1. 通过bindContentCover属性绑定用户协议与隐私政策的详情页面。
// 文本组件绑定用户协议详情全屏模态页面和隐私政策详情全屏模态页面
Text() {
  ForEach(Constants.AGREEMENT_AND_PRIVACY_CONTENT_LIST, (textItem: string, index: number) => {
    Span(textItem)
      // ...
      .onClick(() => {
        if (index === Constants.AGREEMENT_INDEX) {
          this.isShowAgreement = true;
        } else if (index === Constants.PRIVACY_INDEX) {
          this.isShowPolicy = true;
        }
      })
  })
}
// ...
.bindContentCover(this.isShowAgreement || this.isShowPolicy,
  this.isShowAgreement ? this.userAgreementBuilder() : this.privacyPolicyBuilder(), {
    onDisappear: (() => {
      if (this.isShowAgreement) {
        this.isShowAgreement = false;
      } else {
        this.isShowPolicy = false;
      }
    })
  })

@Builder
userAgreementBuilder(): void {
  ... // 自定义用户协议详情全屏模态页面
}

@Builder
privacyPolicyBuilder(): void {
   ... // 自定义隐私政策详情全屏模态页面
}
  1. 通过PersistentStorage持久化存储用户协议与隐私政策同意状态,判断是否拉起用户协议与隐私政策半模态页面。
// 初始化PersistentStorage
PersistentStorage.persistProp('agreedState', 0);
PersistentStorage.persistProp('flag', false);

// 组件内部定义属性
@StorageLink('agreedState') agreedState: number = 1;
@StorageLink('flag') flag: boolean = true;

aboutToAppear(): void {
  if (this.agreedState === Constants.AGREED_STATE[1]) {
    this.pathStack.pushPathByName('Home', null);
  } else {
    this.isShow = true;
  }

  // 拉起协议
  this.intervalID = setInterval(() => {
    if (!this.flag) {
      this.isShow = true;
      this.flag = !this.flag;
    }
    if (this.intervalID) {
      clearInterval(this.intervalID);
    }
  }, Constants.DELAY_TIME);
}

更多关于HarmonyOS鸿蒙Next中隐私弹窗上的链接无法弹出一个新窗口的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


微信发的淘宝链接复制打开淘宝不能自动打开,喊小艺帮忙打开也不行,菜,

在HarmonyOS Next中,隐私弹窗上的链接无法弹出新窗口,通常是由于系统对Web组件或WebView的默认行为限制所致。鸿蒙系统在隐私弹窗中可能禁用了多窗口或弹窗功能,以确保界面一致性和安全性。可通过检查Web组件的弹窗权限设置,或确认是否使用了正确的窗口管理API,如避免在隐私弹窗内使用非标准Web行为。确保应用遵循鸿蒙的UI规范,以正确处理链接交互。

在HarmonyOS Next中,隐私弹窗上的链接默认不会自动打开新窗口,这是出于安全性和用户体验的考虑。要解决这个问题,可以通过以下方式实现链接在新窗口打开:

  1. 使用Web组件:如果隐私弹窗内容通过Web组件加载,可以在Web组件中配置multiplewindows属性为true,允许打开新窗口。

  2. 自定义弹窗行为:如果是自定义弹窗,可以在链接的点击事件中调用window.open()方法,并确保弹窗权限已正确配置。

  3. 检查权限设置:确认应用已申请必要的窗口管理权限,例如在module.json5中声明ohos.permission.SYSTEM_FLOAT_WINDOW(如果涉及悬浮窗)。

示例代码(使用Web组件):

Web({
  src: 'privacy_policy.html',
  multiplewindows: true
})

如果以上方法仍无法解决问题,请检查链接的target属性是否设置为_blank,并确认系统权限设置允许应用打开新窗口。

回到顶部