当前位置: 首页 > article >正文

鸿蒙-任务栏右击退出 或 UIAbility窗口关闭,怎么弹框拦截

onPrepareToTerminate 需要配置权限 ohos.permission.PREPARE_APP_TERMINATE
参考链接:文档中心

import { emitter } from '@kit.BasicServicesKit';
import { common } from '@kit.AbilityKit';
import { TipsDialog } from '@kit.ArkUI';

// entryAbility.ets 在你的uiability中添加如下生命周期
onPrepareToTerminate() {
  // 开发者定义预关闭动作
  emitter.emit("windowWillDestroy")
  emitter.on("close",(data)=>{
    this.context.terminateSelf();
  })
  return true; // 已定义预关闭操作后,返回true表示UIAbility取消关闭
}

// Index.ets:
@Entry
@Component
struct Page {
  @State message: string = 'Hello World';
  dialogControllerImage: CustomDialogController = new CustomDialogController({
    builder: TipsDialog({
      content: '想要关闭这个APP嘛?',
      primaryButton: {
        value: '取消',
        action: () => {
          console.info('Callback when the first button is clicked')
        },
      },
      secondaryButton: {
        value: '退出',
        role: ButtonRole.ERROR,
        action: () => {
          emitter.emit("close");
          console.info('Callback when the second button is clicked')
        }
      },
      onCheckedChange: () => {
        console.info('Callback when the checkbox is clicked')
      }
    }),
  })

  onPageShow(): void {
    emitter.on("windowWillDestroy", () => {
      let ablityContext = getContext() as common.UIAbilityContext // 这行没用到
      ablityContext.showAbility()    // 这行没用到
      console.log("yes")
      this.dialogControllerImage.open()
    })
  }

  build() {
    RelativeContainer() {
      Text(this.message)
        .id('PageHelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
    }
    .height('100%')
    .width('100%')
  }
}

http://www.kler.cn/news/367285.html

相关文章:

  • 使用Llama Index与Streamlit实现一个从文本中提取专业术语和定义网页小程序
  • Redis 哨兵 总结
  • 021、深入解析前端请求拦截器
  • STM32应用详解(10)I2C总线初始化
  • ELK之路第一步——Elasticsearch集群的搭建以及踩坑记录
  • 《Windows PE》7.4 资源表应用
  • 优质短视频素材平台推荐
  • Python unstructured库详解:partition_pdf函数完整参数深度解析
  • 4.1.3 网站通信技术
  • NoSQL 数据库 Redis
  • 如何初始化一个线上的GitHub仓库,在本地已有的仓库中上传到线上
  • 论文阅读笔记 attentation机制
  • 三,Linux基础环境搭建(CentOS7)- 安装Hadoop
  • Intelij IDEA通过Maven部署一个Tomcat的JavaWeb项目
  • Vue3用户关注与粉丝列表展示
  • 前端页面手机端触摸屏操作
  • 【C/C++ explicit关键字】为什么有了explicit关键字的构造函数 就不能再有 其无参构造函数
  • 神经架构搜索:自动化设计神经网络的方法
  • Mysql5.7变为GreatSQL 8.0.32-25过程中,SQL语句报错及解决方案
  • 原生页面引入Webpack打包JS
  • uniApp 加载google地图 并规划路线
  • 仕考网:25年初级会计师备考建议
  • 十分钟了解Android Handler、Looper、Message
  • Java虚拟机:JVM介绍
  • 微服务与多租户详解:架构设计与实现
  • Spring微服务学习笔记之Spring Cloud Alibaba远程服务调用实战