【Android】SystemUI通知栏过滤指定应用的通知

需求

通知栏显示过多通知,有的是前台服务,客户反馈有的前台服务点不进去,不想让它出现在通知栏.
所以让其在添加显示时过滤掉即可。

修改

NotificationListener.java — Android9
StatusBar.java — Android8.1
onNotificationPosted ---- 更新通知栏通知的方法

public void onNotificationPosted(final StatusBarNotification sbn,
            final RankingMap rankingMap) {
    //add isSoundNotification function to skip sound services notification 20240325
    if (sbn != null && !onPluginNotificationPosted(sbn, rankingMap) && !isSoundNotification(sbn)) {
        ....
    }
}

    //add  for skip sound notification 20240325 start
    private boolean isSoundNotification(StatusBarNotification statusBarNotification) {
        Log.i(TAG,"isSoundNotification package name = " + statusBarNotification.getPackageName());
        return statusBarNotification.getPackageName().contains("xxx.xxx.xxx");
    }
    //add  for skip sound notification 20240325 end
### 自定义或调试 Android SystemUI 下拉通知栏事件 #### 修改 `SystemUI` 项目结构 为了实现对下拉通知栏事件的自定义或调试,需要访问并修改位于 `frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java` 文件中的逻辑[^1]。 #### 添加日志记录以便于调试 在 `onTouchEvent(MotionEvent event)` 方法内增加详细的日志输出可以帮助理解触摸事件的具体流程: ```java @Override public boolean onTouchEvent(MotionEvent event) { Log.d("DEBUG_STATUSBAR", "Touch Event: " + MotionEvent.actionToString(event.getAction())); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: Log.d("DEBUG_STATUSBAR", "Finger down at X:" + event.getX() + ", Y:" + event.getY()); break; case MotionEvent.ACTION_MOVE: Log.d("DEBUG_STATUSBAR", "Moving finger to X:" + event.getX() + ", Y:" + event.getY()); break; case MotionEvent.ACTION_UP: Log.d("DEBUG_STATUSBAR", "Finger lifted up"); break; } return super.onTouchEvent(event); } ``` 通过上述代码可以追踪到每次触发下拉操作时手指的位置变化情况以及具体发生的动作类型。 #### 使用 ADB 命令实时查看日志 连接设备后,在命令行输入如下指令来过滤出仅属于 `DEBUG_STATUSBAR` 标签的日志信息: ```bash adb logcat | grep DEBUG_STATUSBAR ``` 这一步骤有助于开发人员迅速定位问题所在,并验证所做更改的效果。 #### 实现更复杂的交互行为 如果希望进一步调整下拉手势的功能,比如改变展开速度或是引入新的动画效果,则可能涉及到更多源文件内的函数重写工作。例如可以在 `PhoneWindowManager.java` 中找到关于窗口管理器如何响应不同类型的滑动手势的相关配置项[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值