HarmonyOS 鸿蒙Next 使用 promptAction.openCustomDialog实现全局弹窗升级beta2后无法弹出

发布于 1周前 作者 sinazl 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 使用 promptAction.openCustomDialog实现全局弹窗升级beta2后无法弹出

代码:

const that = AppUtils.getAppUIContext()
if (that&&result&&result.result&&result.result.upgInfo&&result.result.upgInfo.upgUrl) {
if(AppUtils.getUpdateAppDialogId()!=0){
//终止
return
}
promptAction.openCustomDialog({ builder: AppUpdateDialogBuilder.bind(that, result.result.upgInfo),alignment:DialogAlignment.Center , autoCancel: false,width:"94%",onWillDismiss:(dismissDialogAction: DismissDialogAction)=> {
if (dismissDialogAction.reason == DismissReason.PRESS_BACK) {

}
if (dismissDialogAction.reason == DismissReason.TOUCH_OUTSIDE) {

}
if (dismissDialogAction.reason == DismissReason.CLOSE_BUTTON) {

}
},})
.then((dialogId: number) => {
AppUtils.setUpdateAppDialogId(dialogId)
})
}else {
promptAction.showToast({ message: result.reInfo })
}



import { promptAction } from '@kit.ArkUI'
import { GlobalContext } from '../../appability/GlobalContext'
import { UpdateInfoBean } from '../../models/AppUpdateModle'
import Logger from '../../models/Logger'
import AppUtils from '../../utils/AppUtils'


@Builder
export function AppUpdateDialogBuilder(content: UpdateInfoBean) {
Column() {
Image($r('app.media.hyb_img_upgrade_top')).width("100%").height('182')
Text(`是否升级到${content.upgVer}版本?`).fontSize(18).fontWeight(FontWeight.Bold).textAlign(TextAlign.Start).width("100%").margin({ top: 10 }).padding({left:15,right:15})
Text(content.upgTip).fontSize(16).textAlign(TextAlign.Start).width("100%").margin({ top: 10}).padding({left:15,right:15})
Row(){
Button(content.cancelBtn).fontSize(16).fontColor('#6C6C6C').borderColor($r('app.color.theme_red_color')).borderWidth(1).height(40).width('42%').backgroundColor(Color.Transparent).onClick(()=>{
/** 升级类型 -1:不升级;0:非强制升级,1强制升级 */
promptAction.closeCustomDialog(AppUtils.getUpdateAppDialogId())
AppUtils.setUpdateAppDialogId(0)
if(content.upgType=='1'){
AppUtils.killApp()
}
})
Button(content.submitBtn).fontSize(16).fontColor(Color.White).height(40).width('42%').backgroundColor($r('app.color.lg_red')).onClick(()=>{
promptAction.closeCustomDialog(AppUtils.getUpdateAppDialogId())
AppUtils.setUpdateAppDialogId(0)
AppUtils.skipStore(content.upgUrl)
if(content.upgType=='1'){
AppUtils.killApp()
}
})
}
.width('100%')
.margin({ top: 30 ,bottom:30})
.justifyContent(FlexAlign.SpaceEvenly)
}
}



export interface UpdateInfoBean {
/** 升级类型 -1:不升级;0:非强制升级,1强制升级 */
upgType: string
/** 即将升级到的版本号 */
upgVer: string
/** 升级提示 */
upgTip: string
/** APK 下载地址 */
upgUrl: string

/** 确认文本 */
submitBtn: string
/***取消文本*/
cancelBtn: string
}

更多关于HarmonyOS 鸿蒙Next 使用 promptAction.openCustomDialog实现全局弹窗升级beta2后无法弹出的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

根据提供的代码,demo如下:

import { promptAction } from '[@kit](/user/kit).ArkUI'
interface UpdateInfoBean {
 /** 升级类型 -1:不升级;0:非强制升级,1强制升级 */
 upgType: string
 /** 即将升级到的版本号 */
 upgVer: string
 /** 升级提示 */
 upgTip: string
 /** APK 下载地址 */
 upgUrl: string
 /** 确认文本 */
 submitBtn: string
 /***取消文本*/
 cancelBtn: string
}
let customDialogId: number = 0
let content: UpdateInfoBean = {
 upgType: "string1",
 upgVer: "string2",
 upgTip: "string3",
 upgUrl: "string4",
 submitBtn: 'string5',
 cancelBtn: 'string6'
}
[@Builder](/user/Builder)
export function AppUpdateDialogBuilder(content: UpdateInfoBean) {
 Column() {
   Image($r('app.media.startIcon')).width("100%").height('182')
   Text(`是否升级到${content.upgVer}版本?`).fontSize(18).fontWeight(FontWeight.Bold).textAlign(TextAlign.Start).width("100%").margin({ top: 10 }).padding({ left: 15, right: 15 })
   Text(content.upgTip).fontSize(16).textAlign(TextAlign.Start).width("100%").margin({ top: 10 }).padding({ left: 15, right: 15 })
   Row() {
     Button(content.cancelBtn).fontSize(16).fontColor('#6C6C6C').borderColor(Color.Red).borderWidth(1).height(40).width('42%').backgroundColor(Color.Transparent)
       .onClick(() => {
         /** 升级类型 -1:不升级;0:非强制升级,1强制升级 */
         promptAction.closeCustomDialog(customDialogId)
       })
     Button(content.submitBtn).fontSize(16).fontColor(Color.White).height(40).width('42%').backgroundColor(Color.Red)
       .onClick(() => {
         promptAction.closeCustomDialog(customDialogId)
       })
   }
   .width('100%')
   .margin({ top: 30, bottom: 30 })
   .justifyContent(FlexAlign.SpaceEvenly)
 }
}
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
 [@State](/user/State) message: string = 'Hello World'
 [@Builder](/user/Builder)
 customDialogComponent() {
   AppUpdateDialogBuilder(content)
 }
 build() {
   Row() {
     Column() {
       Text(this.message)
         .fontSize(50)
         .fontWeight(FontWeight.Bold)
         .onClick(() => {
           promptAction.openCustomDialog({
             builder: () => {
               this.customDialogComponent()
             },
             showInSubWindow: false,
             offset: { dx: 5, dy: 5 },
             backgroundColor: 0xd9ffffff,
             cornerRadius: 20,
             width: '90%',
             height: "80%",
             borderWidth: 1,
             borderStyle: BorderStyle.Dashed, //使用borderStyle属性,需要和borderWidth属性一起使用
             borderColor: Color.Blue, //使用borderColor属性,需要和borderWidth属性一起使用
             shadow: ({
               radius: 20,
               color: Color.Grey,
               offsetX: 50,
               offsetY: 0
             }),
           }).then((dialogId: number) => {
             customDialogId = dialogId
           })
         })
     }
     .width('100%')
   }
   .height('100%')
 }
}

更多关于HarmonyOS 鸿蒙Next 使用 promptAction.openCustomDialog实现全局弹窗升级beta2后无法弹出的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,若使用promptAction.openCustomDialog在升级到beta2版本后无法弹出全局弹窗,可能是由于以下几个原因:

  1. 权限问题:确保应用已正确声明并获取了显示全局弹窗所需的权限。在config.json中检查并添加必要的权限声明。

  2. API变更:beta2版本可能对openCustomDialog的调用方式或参数有所调整。查阅最新的HarmonyOS开发者文档,确认API的使用方法和参数是否有所变化。

  3. 系统限制:某些情况下,系统可能出于安全或用户体验考虑,对全局弹窗的使用进行了限制。确认当前的系统设置或策略是否允许应用显示全局弹窗。

  4. 代码实现:检查openCustomDialog的调用代码,确保传入的参数(如Dialog对象、上下文等)正确无误,且Dialog对象已正确配置。

  5. 日志分析:查看应用日志,分析是否有相关错误信息或异常堆栈,这有助于定位问题。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部