屏蔽通知的地方在:
alps_mssi/frameworks/base/services/core/java/com/android/server/notification/NotificationManagerService.java
在这个方法里,enqueueNotificationInternal()方法的主要作用是将一个通知添加到系统的通知队列中。它包括检查权限、处理通知内容、更新相关的通知通道、并最终决定是否将通知展示给用户。
方法参数
pkg
:应用包名。opPkg
:操作包名,通常与pkg
相同。callingUid
:调用此方法的应用的UID(用户ID)。callingPid
:调用此方法的进程ID。tag
:通知的标签。id
:通知的ID。notification
:Notification对象,表示要显示的通知。incomingUserId
:传入的用户ID。postSilently
:是否静默发布通知。
其中
mHandler.post(new EnqueueNotificationRunnable(userId, r, isAppForeground, SystemClock.elapsedRealtime()));
是将通知加入队列的功能调用,如果想要屏蔽通知,只需要在这个上面加上过滤条件即可
if(!android.equals(packageName)){
mHandler.post(new EnqueueNotificationRunnable(userId, r, isAppForeground, SystemClock.elapsedRealtime()));
}
例如这样,那包名不带android的通知就无法显示了。