当试图回复传入消息时,消息应用程序会闪烁
问题描述:
Actual Results: Unable to reply for incoming message as Messaging app flickers and closes.
Expected Results: User should be able to send reply for incoming messages.
Reproduction Steps:
- Stay in home screen.
- Receive an incoming message.
- Click on reply from incoming pop-up.
Reproducibility: 2/3
Recoverability: NA
Comparative Data: Issue not seen in ET65
*****{}{}{}Device Details{}{}{}*****
Software
Build Number: 13-10-03.00-TG-U00-PRD-NEM-04
具体Error的UI如下面的图片所示:

分析可能是QN 的对话框中手机号码的长度过长导致的问题
解决方案如下:
frameworks/base/+/447854/2/core/java/android/app/Notification.java
private RemoteViews makeMessagingView(int viewType) {boolean isCollapsed = viewType != StandardTemplateParams.VIEW_TYPE_BIG;boolean hideRightIcons = viewType != StandardTemplateParams.VIEW_TYPE_NORMAL;boolean isConversationLayout = mConversationType != CONVERSATION_TYPE_LEGACY;boolean isImportantConversation = mConversationType == CONVERSATION_TYPE_IMPORTANT;boolean isHeaderless = !isConversationLayout && isCollapsed;CharSequence conversationTitle = !TextUtils.isEmpty(super.mBigContentTitle)? super.mBigContentTitle: mConversationTitle;CharSequence conversationTitleNew = "";boolean atLeastP = mBuilder.mContext.getApplicationInfo().targetSdkVersion>= Build.VERSION_CODES.P;boolean isOneToOne;CharSequence nameReplacement = null;if (!atLeastP) {isOneToOne = TextUtils.isEmpty(conversationTitle);if (hasOnlyWhiteSpaceSenders()) {isOneToOne = true;nameReplacement = conversationTitle;conversationTitle = null;}} else {isOneToOne = !isGroupConversation();}if (isHeaderless && isOneToOne && TextUtils.isEmpty(conversationTitle)) {conversationTitle = getOtherPersonName();}if (ZebraUtils.isZebra().orElse(false) && ZebraUtils.isMediumDisplay().orElse(false) && conversationTitle.length()>=7){conversationTitleNew = conversationTitle.subSequence(0,7) + ".";}else{conversationTitleNew = conversationTitle;}Icon largeIcon = mBuilder.mN.mLargeIcon;TemplateBindResult bindResult = new TemplateBindResult();StandardTemplateParams p = mBuilder.mParams.reset().viewType(viewType).highlightExpander(isConversationLayout).hideProgress(true).title(isHeaderless ? conversationTitle : null).text(null).hideLeftIcon(isOneToOne).hideRightIcon(hideRightIcons || isOneToOne).headerTextSecondary(isHeaderless ? null : conversationTitle);RemoteViews contentView = mBuilder.applyStandardTemplateWithActions(isConversationLayout? mBuilder.getConversationLayoutResource(): isCollapsed? mBuilder.getMessagingLayoutResource(): mBuilder.getBigMessagingLayoutResource(),p,bindResult);if (isConversationLayout) {mBuilder.setTextViewColorPrimary(contentView, R.id.conversation_text, p);mBuilder.setTextViewColorSecondary(contentView, R.id.app_name_divider, p);}addExtras(mBuilder.mN.extras);contentView.setInt(R.id.status_bar_latest_event_content, "setLayoutColor",mBuilder.getSmallIconColor(p));contentView.setInt(R.id.status_bar_latest_event_content, "setSenderTextColor",mBuilder.getPrimaryTextColor(p));contentView.setInt(R.id.status_bar_latest_event_content, "setMessageTextColor",mBuilder.getSecondaryTextColor(p));contentView.setInt(R.id.status_bar_latest_event_content,"setNotificationBackgroundColor",mBuilder.getBackgroundColor(p));contentView.setBoolean(R.id.status_bar_latest_event_content, "setIsCollapsed",isCollapsed);contentView.setIcon(R.id.status_bar_latest_event_content, "setAvatarReplacement",mBuilder.mN.mLargeIcon);contentView.setCharSequence(R.id.status_bar_latest_event_content, "setNameReplacement",nameReplacement);contentView.setBoolean(R.id.status_bar_latest_event_content, "setIsOneToOne",isOneToOne);contentView.setCharSequence(R.id.status_bar_latest_event_content,"setConversationTitle", conversationTitleNew);if (isConversationLayout) {contentView.setIcon(R.id.status_bar_latest_event_content,"setShortcutIcon", mShortcutIcon);contentView.setBoolean(R.id.status_bar_latest_event_content,"setIsImportantConversation", isImportantConversation);}if (isHeaderless) {// Collapsed legacy messaging style has a 1-line limit.contentView.setInt(R.id.notification_messaging, "setMaxDisplayedLines", 1);}
}
其中关键处理是对号码的长度做截取处理:
if (ZebraUtils.isZebra().orElse(false) && ZebraUtils.isMediumDisplay().orElse(false) && conversationTitle.length()>=7){conversationTitleNew = conversationTitle.subSequence(0,7) + ".";}else{conversationTitleNew = conversationTitle;}
修改后的效果如下:

相关文章:
当试图回复传入消息时,消息应用程序会闪烁
问题描述: Actual Results: Unable to reply for incoming message as Messaging app flickers and closes. Expected Results: User should be able to send reply for incoming messages. Reproduction Steps: Stay in home screen. Receive an incoming mes…...
Hubery-个人项目经历记录
研究生期间很有幸的进入到了崔老师的组,从此也就进入到了分析人体生理信号的领域,充满挑战的同时也充满了乐趣。借着CSDN整理一下近几年来参与的项目,这里蕴含着我各种美好的回忆,也作为一个展示自己的平台吧。博客中很多结果只给…...
Ubuntu18.04 安装 qt 5.15.2
一.安装qt 1.下载 在线安装包 使用国内镜像源在线安装QT(2023.3.25更新)_qt国内镜像-CSDN博客 2.安装 (1)QT库安装: 注意:我安装时 勾选 Qt Design studio 会导致报错,直接不勾选。 注意:Qtcreator 无…...
【Linux Shell】6. echo 命令
文章目录 【 1. 显示普通字符串 】【 2. 显示转义字符 】【 3. 显示变量 】【 4. 显示换行 】【 5. 显示不换行 】【 6. 显示命令执行结果 】 Shell 的 echo 指令用于字符串的输出。命令格式: echo string【 1. 显示普通字符串 】 #!/bin/bashecho "It is a …...
Dell 机架式服务器 - 高级定制服务
Dell 机架式服务器 - 高级定制服务 1. Dell Technologies2. 机架式服务器 - 高级定制服务2.1. Servers & Storage (服务器及存储) -> Servers2.2. Rack Servers (机架式服务器)2.3. Shop2.4. PowerEdge Rack Servers (PowerEdge 机架式服务器)2.5. PowerEdge R760 Rack …...
C++ 中关键字 Static
1、什么是static? static 是C中很常用的修饰符,它被用来控制变量的存储方式和可见性。由关键字static修饰类中成员,成为类的静态成员。类的静态成员为其所有对象共享,不管有多少对象,静态成员只有一份存于公用内存中。静态…...
系统学习Python——警告信息的控制模块warnings:警告过滤器-[重写默认的过滤器]
分类目录:《系统学习Python》总目录 Python应用程序的开发人员可能希望在默认情况下向用户隐藏所有Python级别的警告,而只在运行测试或其他调试时显示这些警告。用于向解释器传递过滤器配置的sys.warningoptions属性可以作为一个标记,表示是否…...
C++力扣题目-- 二叉树层序遍历
102.二叉树的层序遍历(opens new window)107.二叉树的层次遍历II(opens new window)199.二叉树的右视图(opens new window)637.二叉树的层平均值(opens new window)429.N叉树的层序遍历(opens new window)515.在每个树行中找最大值(opens new window)116.填充每个节点的下一个右…...
前端实现回车键触发搜索
前端实现回车键触发搜索 前言实现方法1. html里可以用 form 来实现2. 非form中的input 前言 搜索框是个常见的功能,除了用现有的ui组件库,有的时候必须要自己封装,所以涉及到点击按钮搜索和回车搜索都要实现 实现方法 1. html里可以用 for…...
k8s yaml文件pod的生命周期
Pod是k8s中最小限额资源管理组件,也是最小化运行容器化的应用的资源管理对象。 Pod是一个抽象的概念,可以理解为一个或者多个容器化应用的集合。 在一个pod当中运行一个容器是最常用的方式。 在一个pod当中同时运行多个容器,在一个pod当中…...
MPEG4Extractor
1、readMetaData 必须要找到 Moov box,找到 Mdat box或者 Moof box,并且创建了 ItemTable 大端 box 分为 box header 和 box content: box header由8个字节组成,前面四个字节表示这个box 的大小(包含这个头的8字节&a…...
我在工作一年时怎么都看不懂的编程写法。今天手把手教给你
作为一名程序员,你一定遇到或亲自写过这样的代码。有人将它形象的形容为shi山,或者被戏称为“面向保就业编程”。 以下面这个代码为例,其中的问题也显而易见,当越来越多的条件判断时,代码会变得非常臃肿,难…...
ThinkPHP5多小区物业管理系统源码(支持多小区)
基于 ThinkPHP5 Bootstrap 倾力打造的多小区物业 管理系统源码,操作简单,功能完善,用户体验良好 开发环境PHP7mysql 安装步骤: 1.新建数据库db_estate,还原数据db_estate.sql 2.修改配置文件:application/database.php 3.运…...
2024 年 API 安全:预测和趋势
随着技术以前所未有的速度不断进步,API(应用程序编程接口)安全性的复杂性也随之增加。随着 API 在现代应用程序和服务中的激增,组织将需要更好地了解其 API 环境以及 API 给运营带来的风险。 到 2024 年,预计几个关键…...
3D模型UV展开原理
今年早些时候,我为 MAKE 杂志写了一篇教程,介绍如何制作视频游戏角色的毛绒动物。 该技术采用给定的角色 3D 模型及其纹理,并以编程方式生成缝纫图案。 虽然我已经编写了一般摘要并将源代码上传到 GitHub,但我在这里编写了对使这一…...
SPL-cmcRVFL+
吐槽 作者未提供代码,还有图1敢再糊点吗?...
Vue3+TS+Vite 构建自动导入开发环境
关注⬆️⬆️⬆️⬆️ 专栏后期更新更多前端内容 在一个使用 Vue 3、Vite 和 TypeScript 的项目中,配置 unplugin-auto-import 和 unplugin-vue-components 插件可以极大地提高开发效率,因为它们可以自动导入 Vue 相关的 API 和 Vue 组件,从而减少了手动导入的需要。 文章目…...
长期使用外接键盘,外物压着自带键盘,容易导致华硕飞行堡垒FX53VD键盘全部失灵【除电源键】
华硕飞行堡垒FX53VD键盘全部失灵【除电源键】 前言一、故障排查二、发现问题三、使用方法总结 前言 版本型号: 型号 ASUS FX53VD(华硕-飞行堡垒) 板号:GL553VD 故障情况描述: 键盘无法使用,键盘除开机键外…...
JavaScript-循环嵌套断点调试-笔记
1.do...while循环 do while语法结构: 循环初始值; do{ //代码; 增量; }while(循环条件); <script> // 输出十句 : 你好世界 var …...
1042: 数列求和3 和 1057: 素数判定 和 1063: 最大公约与最小公倍
1042: 数列求和3 题目描述 求1-2/33/5-4/75/9-6/11...的前n项和,结果保留3位小数。 输入 输入正整数n(n>0)。 输出 输出一个实数,保留3位小数,单独占一行。 样例输入 5 样例输出 0.917 #include<stdio.h> int main(){in…...
用LDA模型挖掘微信聊天秘密:Gensim实战教程(含pyLDAvis可视化)
用LDA模型挖掘微信聊天秘密:Gensim实战教程(含pyLDAvis可视化) 微信聊天记录中隐藏着大量有价值的信息,从日常对话到重要决策,这些文本数据就像一座未被充分挖掘的金矿。本文将带你用Python中的Gensim库构建LDA主题模型…...
5V与3.3V MCU串口电平转换电路设计
不同工作电压MCU间的串口电平转换电路设计1. 项目概述1.1 问题背景在现代嵌入式系统设计中,经常遇到不同工作电压的微控制器(MCU)之间需要进行串口通信的场景。例如:MCU1工作电压:5VMCU2工作电压:3.3V若直接将两个MCU的TX、RX引脚…...
深度学习 三次浪潮、三大驱动力与神经科学的恩怨(二)
1. 一个领域,多个名字 很多人以为"深度学习"是一个全新的领域。事实上,它的历史可以追溯到 20 世纪 40 年代——只不过在不同时期,它被叫过完全不同的名字: 1940s-1960s:被称为控制论(Cybernetic…...
DOL-CHS-MODS实战指南:从入门到精通的5个关键步骤
DOL-CHS-MODS实战指南:从入门到精通的5个关键步骤 【免费下载链接】DOL-CHS-MODS Degrees of Lewdity 整合 项目地址: https://gitcode.com/gh_mirrors/do/DOL-CHS-MODS 副标题:一站式解决Degrees of Lewdity汉化与Mod整合难题,让你轻…...
Windows 11终极清理优化指南:用Win11Debloat快速提升系统性能
Windows 11终极清理优化指南:用Win11Debloat快速提升系统性能 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本,用于从Windows中移除预装的无用软件,禁用遥测,从Windows搜索中移除Bing,以及执行各种其他更改以…...
modelsim crack过程中显示dll文件找不到解决方法
把这几个文件放到modelsim/win64目录下,按照教程点击patch64生成license时会报错,如下找不到文件 - mgls.dll找不到文件 - mgls64.dll这个时候关闭杀毒软件进入你的 D:\modeltech64_10.5\win64 文件夹。在文件夹上方的地址栏(显示路径的地方&…...
别再混淆了!深入对比Vivado中AXI DMA IP核与PS端DMA控制器的角色与分工
深入解析Vivado中AXI DMA与PS端DMA控制器的协同设计 在Zynq/MPSoC平台的软硬件协同开发中,数据搬运效率往往成为系统性能的瓶颈。许多开发者虽然能够熟练使用Vivado中的AXI DMA IP核完成基本数据传输,却对PL端AXI DMA与PS端DMA控制器之间的分工协作机制存…...
C++ 内存分配器工作原理
C内存分配器工作原理探秘 在C中,动态内存管理是程序性能优化的关键环节,而内存分配器则是幕后英雄。它负责在堆上高效分配和释放内存,直接影响程序的运行效率和资源利用率。无论是标准库中的std::allocator,还是自定义的高性能分…...
3大场景解析:开源工具如何重构MobaXterm的专业版体验
3大场景解析:开源工具如何重构MobaXterm的专业版体验 【免费下载链接】MobaXterm-Keygen MobaXterm Keygen Originally by DoubleLabyrinth 项目地址: https://gitcode.com/gh_mirrors/mob/MobaXterm-Keygen 在开发者的日常工作中,终端工具的选择…...
为什么你的Mojo-Python FFI在M1芯片上必崩?苹果Silicon专属ABI陷阱与跨架构符号绑定修复指南(含Clang插件源码)
第一章:为什么你的Mojo-Python FFI在M1芯片上必崩?Mojo-Python FFI(Foreign Function Interface)在 Apple M1 及后续 ARM64 架构芯片上崩溃,根源并非配置疏忽,而是底层 ABI 不兼容与运行时符号解析机制的双…...
