bug 现象:设置闹钟或静音模式后,状态栏不显示图标,但下拉状态栏中有显示

在网上搜索了下没人报这个问题,大家是都默认了???

找到一篇报道有写,bug 相关

关于 Bug 修复方面,Android 12 Beta 4 修复了部分未接来电通知无法关闭的问题,

修复了系统主题颜色不适用某些快速设置图块的问题,

修复了快速设置图块在拖动或重新排列时,未与网格对齐的问题。修复了通知栏不显示闹钟和静音图标的问题。

patch

frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java

@@ -203,8 +203,9 @@ public class KeyguardStatusBarView extends RelativeLayout implements// Set hidden status bar itemsprivate void loadBlockList() {Resources r = getResources();
-        mBlockedIcons.add(r.getString(com.android.internal.R.string.status_bar_volume));
-        mBlockedIcons.add(r.getString(com.android.internal.R.string.status_bar_alarm_clock));
+        //aosp bug block alarm and mute icon
+        // mBlockedIcons.add(r.getString(com.android.internal.R.string.status_bar_volume));
+        // mBlockedIcons.add(r.getString(com.android.internal.R.string.status_bar_alarm_clock));mBlockedIcons.add(r.getString(com.android.internal.R.string.status_bar_call_strength));}

frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java

@@ -158,8 +158,9 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue}mDarkIconManager = new DarkIconManager(view.findViewById(R.id.statusIcons), mFeatureFlags);mDarkIconManager.setShouldLog(true);
-        mBlockedIcons.add(getString(com.android.internal.R.string.status_bar_volume));
-        mBlockedIcons.add(getString(com.android.internal.R.string.status_bar_alarm_clock));
+        //aosp bug block alarm and mute icon
+        // mBlockedIcons.add(getString(com.android.internal.R.string.status_bar_volume));
+        // mBlockedIcons.add(getString(com.android.internal.R.string.status_bar_alarm_clock));mBlockedIcons.add(getString(com.android.internal.R.string.status_bar_call_strength));mDarkIconManager.setBlockList(mBlockedIcons);

分析思路:

状态栏icon对应 StatusBarIconView,找到其中

setVisibility(icon.visible && !mBlocked ? VISIBLE : GONE); 可以看到有个 mBlocked,有的显示有的不显示,那应该就是被黑了。

StatusBarIconControllerImpl.java
onTuningChanged(String key, String newValue) {
mIconHideList.addAll(StatusBarIconController.getIconHideList(mContext, newValue));

addSystemIcon(int index, StatusBarIconHolder holder) {boolean hidden = mIconHideList.contains(slot);l.onIconAdded(viewIndex, slot, hidden, holder));

StatusBarIconController.java
addHolder(int index, String slot, boolean blocked, StatusBarIconHolder holder) {
if (mBlockList.contains(slot)) {
blocked = true;
}
switch (holder.getType()) {
case TYPE_ICON:
return addIcon(index, slot, blocked, holder.getIcon());

被黑有两种方式,均在 StatusBarIconController 中过滤

第一种看到上面直接传递的 blocked,通过 config.xml 中配置

frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\StatusBarIconController.java

    static ArraySet<String> getIconHideList(Context context, String hideListStr) {ArraySet<String> ret = new ArraySet<>();String[] hideList = hideListStr == null? context.getResources().getStringArray(R.array.config_statusBarIconsToExclude): hideListStr.split(",");for (String slot : hideList) {if (!TextUtils.isEmpty(slot)) {ret.add(slot);}}return ret;}

frameworks\base\packages\SystemUI\res\values\config.xml

    <string-array name="config_statusBarIconsToExclude" translatable="false"><item>@*android:string/status_bar_rotate</item><item>@*android:string/status_bar_headset</item></string-array>

可以看到耳机(headset)和旋转(rotate)被黑了

第二种,通过 mBlockList 进行添加,静音(volume)和闹钟(alarm_clock)和call_strength被黑了

frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\StatusBarIconController.java

 public void setBlockList(@Nullable List<String> blockList) {mBlockList.clear();if (blockList == null || blockList.isEmpty()) {return;}mBlockList.addAll(blockList);}

KeyguardStatusBarView.java CollapsedStatusBarFragment.java

    private void loadBlockList() {Resources r = getResources();mBlockedIcons.add(r.getString(com.android.internal.R.string.status_bar_volume));mBlockedIcons.add(r.getString(com.android.internal.R.string.status_bar_alarm_clock));mBlockedIcons.add(r.getString(com.android.internal.R.string.status_bar_call_strength));}

android12.0(S) 通知栏不显示闹钟和静音图标 bug相关推荐

  1. 鸿蒙系统的通知栏怎么没有静音,微信7.0.0没有消息提示音怎么解决?微信通知栏不显示消息的解决...

    近日,iOS和Android微信7.0.0正式版先后发布,已经有不少小伙伴升级到了最新版本.不过,这几天经常有粉丝朋友反馈,升级到微信7.0.0之后,通知栏没有消息提示音怎么回事?对于这种问题,小编以 ...

  2. Android4.0之后系统通知栏icon显示不全问题

    测试发现解决办法是:把icon的大小改为48*48即可,不清楚为什么不自动压缩图片,貌似4.0之后通知栏就不自觉压缩图片了,这个要注意.

  3. Android 12.0 SystemUI状态栏屏蔽掉通知栏不显示通知

    目录 1.概述 2.SystemUI状态栏屏蔽掉通知栏不显示通知的核心类

  4. Android中使用Notification在通知栏中显示通知

    场景 App在接收到后台推送的消息后,需要在系统通知栏中显示通知消息,并且点击通知消息跳转到新的页面,并将消息内容传递过去. 效果如下 注: 博客: https://blog.csdn.net/bad ...

  5. vc++ 6.0对话框上无法显示中文(乱码)

    是英文版的vc++,建立mfc向导时无法选择中文,到对话框里面改成中文还是乱码,怎么版啊 问题补充: 一般对话框是可以的,就是那个CPropertyPage 不可以对话框资源选成中文以后要ReBuil ...

  6. 如何解决android 通知栏不显示的问题

    如何解决android 通知栏不显示的问题 参考文章: (1)如何解决android 通知栏不显示的问题 (2)https://www.cnblogs.com/haloujava/p/11376290 ...

  7. VC6 + OpenCV1.0实现图片缩放显示

    用vc6新建一个win32控制台程序,代码: /*功能:实现加载jpg图片,并进行缩放显示开发环境: winXP + vc6 + openCV1.0头文件路径:D:\opensource\opencv ...

  8. 8脚51单片机DIY时间显示+闹钟技术分享(一)

    @[8脚51单片机DIY时间显示+闹钟技术分享(一) 最近因为家里闹钟被小朋友摔坏了,所以想着买来买去还是没什么新意,不如自己做一个,这样不是更有意义吗? 那就开始吧,想着自己做就可以用最小资源来实现 ...

  9. windows通知栏中显示 微信等应用软件 的通知

    windows通知栏中显示微信等软件通知 windows10 通知栏如下所示 windows10 首先要在已激活的windows10系统上才能设置,所以要先激活windows系统. 激活windows ...

最新文章

  1. Makefile的东西
  2. 高项2015年下半年培训随堂作业(10月日)
  3. 高速串行自同步方式介绍及原理
  4. 【转】js控制div层背景半透明
  5. C++ 不能在构造函数中调用构造函数
  6. 项目开发容易出错情况统计
  7. java 资源锁_concurrent包 线程池、资源封锁和队列、ReentrantReadWriteLock介绍
  8. 从 “C语言之父” 那里学到的一些好东西!分享给你~
  9. 从码农到工程师:只要做到这6点
  10. word回车后间距太大_word编辑按回车换行上下间距好大怎么回事
  11. linux 挂载3t硬盘分区,Ubuntu挂载3T硬盘或大于2T磁盘的方法
  12. 自体脂肪填充苹果肌硬块多久消
  13. 视频是新时代的文本,微信也不得不认了!
  14. sql trace基础
  15. 罗切斯特大学计算机科学硕士介绍,罗切斯特大学计算机科学专业
  16. 如何做到数据分析报告(五)
  17. 对不同的人说不同的话的职场口才分享
  18. 云时代的mysql dba_美团MySQL巡检系统:上线一年,治理8000+核心隐患
  19. MPLS VPN常见问题
  20. python自动排课表_【python-leetcode207-拓扑排序】课程表

热门文章

  1. Linux磁盘相关-分区与修复
  2. python远程主机强迫关闭了_[转] python 远程主机强迫关闭了一个现有的连接 socket 超时设置 errno 10054...
  3. 【2018年11月12日】其他化学制品行业的股票估值
  4. 怎么查看本地IP地址
  5. 【HTTP Status 500 - Servlet execution threw an exception】
  6. Inventory文件扩展
  7. openCV 需要显示的图片太大超出了屏幕范围
  8. 安卓识别身份证,自动提取身份证信息功能实现(附源码)
  9. 【MySQL篇】第三篇——表的操作
  10. git init和git clone获取仓库 (一)