敏捷冲刺日志 - Day 5

news/2025/12/3 22:25:32/文章来源:https://www.cnblogs.com/BearSur/p/19304190

敏捷冲刺日志 - Day 5

站立会议

站立时会议改为线上进行。

  • 昨天已完成的工作:

    • saveVideoToGallery 功能已实现并测试通过。
    • 初步定位了“替换”闪退问题的原因是 SecurityException
  • 今天计划完成的工作:

    • 核心任务:尝试修复“替换”功能的闪退问题。
    • 方案:使用 MediaStore.createDeleteRequest API 来请求用户授权删除文件,这适用于 Android 11 及以上。对于 Android 10,尝试捕获 RecoverableSecurityException 并启动其附带的 Intent 来请求授权。
  • 工作中遇到的困难:

    • MediaStore.createDeleteRequest 接口虽然好用,但它只能在 Android 11+ 上使用,这意味着必须编写版本兼容性代码。
    • 在测试中发现,RecoverableSecurityException 这个异常在 Android 10 上的行为似乎不稳定,有时并不会如预期那样被抛出,导致无法进入用户授权流程,应用依然会闪退。这是今天遇到的最大障碍。

项目燃尽图

661c981e2a3499b65ccf5801838779ca

代码/文档签入记录

  • 代码签入: fix(replace): Attempt to fix crash with createDeleteRequest and RecoverableSecurityException
  • 签入记录对应的Issue内容与链接:
    • Issue: #BUG-001 - “替换”功能闪退
    • 链接: [链接到内部工单系统]
  • Code Review: 编码规范文档无变化。

最新模块的代码

这是本次为解决闪退问题而编写的核心逻辑。它区分了不同安卓版本,尝试使用不同的 API 来安全地删除文件。

    // 注册一个 ActivityResultLauncher 来处理删除请求的结果private val deleteRequestLauncher = registerForActivityResult(ActivityResultContracts.StartIntentSenderForResult()) { result ->if (result.resultCode == Activity.RESULT_OK) {Toast.makeText(this, "原始视频已删除", Toast.LENGTH_SHORT).show()} else {Toast.makeText(this, "删除原始视频失败或被取消", Toast.LENGTH_SHORT).show()}}private fun deleteOriginalVideos(uris: List<Uri>) {if (uris.isEmpty()) return// Android 11 (R) 及以上版本if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {val pendingIntent = MediaStore.createDeleteRequest(contentResolver, uris)val request = IntentSenderRequest.Builder(pendingIntent.intentSender).build()deleteRequestLauncher.launch(request)} else { // Android 10 (Q) 及以下uris.forEach { uri ->try {// 直接尝试删除contentResolver.delete(uri, null, null)} catch (e: SecurityException) {// 如果是可恢复的安全异常(仅限 Android 10)if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && e is RecoverableSecurityException) {val intentSender = e.userAction.actionIntent.intentSenderval request = IntentSenderRequest.Builder(intentSender).build()// 启动授权流程deleteRequestLauncher.launch(request)} else {// 其他无法处理的异常Toast.makeText(this, "删除原始视频失败,权限不足", Toast.LENGTH_SHORT).show()}}}}}

运行结果的截图

ddcea1c54c5c60f94f64ce17882d748f

每日每人总结

  • 刘瑞康 (开发): 编写了一个独立测试项目专门验证文件删除逻辑,确认 RecoverableSecurityException 在 Android 10 上行为不稳定,该发现为团队决策提供了关键依据。
  • 刘泽昊 (开发): 根据兼容性策略,调整了批量完成后的操作界面,使“批量替换”按钮仅在 Android 11 及以上系统中显示,避免用户在低版本系统上触发崩溃。
  • 伊尔番 (PM): 针对“替换”功能的技术障碍,已启动风险预案。与用户初步沟通解释了系统限制,并探讨以强化“分享”或“另存为”作为替代方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/986099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12月3日日记

1.今天学习java web以及数据结合的复习 2.明天体育课打比赛 3.如何配置 StringRedisTemplate 和 RedisTemplate 的序列化(避免乱码 + 支持对象存储)?

第五篇Scrum冲刺博客

每日Scrum报告 日期: 2025-11-30 会议时间: 09:00 1. 当日站立式会议记录 会议照片成员同步内容 成员:齐思贤昨天已完成的工作:开发个人资料查询接口(GET /api/v1/users/me),返回用户详情(含review_count/coll…

敏捷冲刺日志 - Day 6

敏捷冲刺日志 - Day 6 站立会议 站立时会议改为线上进行。昨天已完成的工作:编写了兼容 Android 10 和 Android 11+ 的文件删除逻辑。 测试发现 Android 10 的 RecoverableSecurityException 方案不稳定。今天计划完成…

深入解析:Spring Kafka消费者被踢出组?CommitFailedException异常全面解析与解决方案

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

OWASP Java HTML 清理库曝出 XSS 漏洞:noscript 与 style 标签组合成隐患

OWASP Java HTML Sanitizer 库在某些特定策略配置下(允许 noscript 和 style 标签并允许 style 标签内含文本),存在跨站脚本漏洞。攻击者可构造特殊载荷绕过清理,导致 XSS 攻击。CVE-2025-66021:OWASP Java HTML …

敏捷冲刺日志 - Day 4

敏捷冲刺日志 - Day 4 站立会议 站立时会议改为线上进行。昨天已完成的工作:实现了视频的多选和队列压缩功能。 UI 可以正确显示批量压缩的进度。今天计划完成的工作:新功能:实现“保存到相册”功能,确保用户压缩的视…

计算机视觉黄金时代的回顾与展望

文章记录了资深科学家梅迪奥尼分享其40多年计算机视觉研究历程,重点阐述了从理解客户问题出发、逆向发明技术的方法论,并介绍了其在无感支付等场景下的实际应用,认为当前是计算机视觉解决现实商业问题的黄金时代。1…

homebrew运行机制

🍺 Homebrew 的结构 = 一个“酿酒厂” 以下是核心概念的真实意义 + 隐喻意义:1. Formula(配方) 真实意义: Homebrew 安装“源码软件”的脚本,描述软件从哪里下载、如何编译、有哪些依赖等。 隐喻: 👉 配方:…

解码构造与析构

构造与析构基础概念 核心定义构造函数:对象被创建时自动调用的特殊成员函数,唯一作用是初始化对象的成员属性,确保对象创建后处于合法可用状态。 析构函数:对象被销毁前自动调用的特殊成员函数,用于释放对象占用的…

敏捷冲刺日志 - Day 2

敏捷冲刺日志 - Day 2 站立会议 站立时会议改为线上进行。昨天已完成的工作:熟悉了项目初始版本(v1.0)的代码结构和功能。 分析了用户提出的三个核心需求:修复权限异常、界面汉化、增加批量处理。今天计划完成的工作…

10.结构型 - 代理模式 (Proxy Pattern)

代理模式 (Proxy Pattern) 在软件开发中,由于一些原因,客户端不想或不能直接访问一个对象,此时可以通过一个称为"代理"的第三者来实现间接访问.该方案对应的设计模式被称为代理模式. 代理模式(Proxy Design …

敏捷冲刺日志 - Day 1

敏捷冲刺日志 - Day 1 各个成员在 Alpha 阶段认领的任务 本次七天冲刺即为项目的 Alpha 阶段,目标是交付一个具备核心功能、可运行、可演示的最小可行产品(MVP)。团队成员在本阶段的任务分配如下:刘瑞康 (开发):负…

2025年中国集成灶十大品牌综合实力榜:选购指南与权威解析

body { font-family: "Microsoft YaHei", sans-serif; line-height: 1.8; color: rgba(51, 51, 51, 1); max-width: 1000px; margin: 0 auto; padding: 20px; background-color: rgba(249, 249, 249, 1) } h…

朝花夕拾OI回忆录

朝花夕拾 OI 回忆录 序言 或许是因为喜欢追忆吧,也或许是临近AFO,内心有一些触动,又或者是为了给后续的OIer一些前者的失败经验吧……总之,2025年12月3日,我十六岁生日这天,我决定写这篇 OI 回忆录,以记录我对O…

细胞因子:细胞信使的分子世界与功能解析

在复杂的多细胞生物体内,细胞间的信息交流是维持生命活动的基础。其中,细胞因子 作为一类关键的信使分子,在免疫调节、细胞生长、分化、炎症反应和组织修复等过程中扮演着不可或缺的角色。本文将深入探讨细胞因子的…

NOIp 的 p 是 painting 的 p!

哇还有连续剧。 作者在 CSP 后推完魔宴正在推 WA2。 Day -6 发现惊天理论:Day -3 最后的 ZR 有点娱乐赛,T1 是哈希表广告题,赛时裸 umap 拿了 90pts,赛后拿 umap 和 gp 卡了一万年卡不过,严肃学习 Dzb 牌哈希表,…

AWS云计算入门指南:从零到一,详解核心服务与免费套餐 - 教程

AWS云计算入门指南:从零到一,详解核心服务与免费套餐 - 教程2025-12-03 22:00 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !impor…

概率论直觉(二):方差与期望 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

图书馆管理系统项目冲刺 Day7

图书馆管理系统项目冲刺 Day7 一、站立式会议 照片: [插入Day6站立会议照片] 二、昨天已完成的工作 读者管理和个人中心完成 搜索优化和推荐系统实现 统计分析功能添加 三、今天计划完成的工作 何昊天: 实现系统设置…

就想赚点学分有什么不队-团队第三次作业—alpha冲刺

就想赚点学分有什么不队-团队第三次作业—alpha冲刺就想讨点学分有什么不队-冲刺总结 一、作业基本信息项目 内容这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/这个作业要求在…