HarmonyOS 鸿蒙Next 使用 promptAction.openCustomDialog实现全局弹窗升级beta2后无法弹出
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
根据提供的代码,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版本后无法弹出全局弹窗,可能是由于以下几个原因:
-
权限问题:确保应用已正确声明并获取了显示全局弹窗所需的权限。在
config.json
中检查并添加必要的权限声明。 -
API变更:beta2版本可能对
openCustomDialog
的调用方式或参数有所调整。查阅最新的HarmonyOS开发者文档,确认API的使用方法和参数是否有所变化。 -
系统限制:某些情况下,系统可能出于安全或用户体验考虑,对全局弹窗的使用进行了限制。确认当前的系统设置或策略是否允许应用显示全局弹窗。
-
代码实现:检查
openCustomDialog
的调用代码,确保传入的参数(如Dialog对象、上下文等)正确无误,且Dialog对象已正确配置。 -
日志分析:查看应用日志,分析是否有相关错误信息或异常堆栈,这有助于定位问题。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。