Android 屏蔽系统通知的几种方法

一、屏蔽SystemUI通知
SystemUI是系统级的apk,其路径为frameworks\base\packages\SystemUI,其主要功能是显示电池信号、通知面板、系统信息、以及第三方应用通知等等。这里列举屏蔽第三方应用等系统底部通知的方法:
路径:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java

   protected NotificationData.Entry createNotificationViews(StatusBarNotification sbn) {
       if (DEBUG) {
           Log.d(TAG, "createNotificationViews(notification=" + sbn);
           }
           final StatusBarIconView iconView = createIcon(sbn);
            if (条件){
                return null;
            }
           NotificationData.Entry entry = new NotificationData.Entry(sbn, iconView);
           if (!inflateViews(entry, mStackScroller)) {
               handleNotificationError(sbn, "Couldn't expand RemoteViews for: " + sbn);
               return null;
           }
           return entry;
       }

从上述代码可得知,当我们不想让通知出现,只需要在createNotificationViews返回null即可。

二、屏蔽特定通知的方法
众所周知Notification就是通知类,发出的通知必然与它有关
其所在的路径为:frameworks/base/core/java/android/app/Notification.java
想要屏蔽特定的通知,可以选择获取到特定通知的内容,以此来做一个判断(假设要屏蔽aiqiyi的通知)

public static boolean isAiqiyiExist = false;
  public Builder setContentText(CharSequence text) {
              mText = safeCharSequence(text);
              if(mText != null && mText.equals("")){
                  int result = mText.toString.indexOf("aiqiyi");
                  if(result != -1){
                      isAiqiyiExist = true;
                  }
              }
              return this;
          }

上述代码定义isAiqiyiExist标志位,当捕捉到此类通知时,会将这个标志位为true。
Notification的显示是在NotificationManager,其路径为:frameworks/base/core/java/android/app/NotificationManager.java
当通知要显示时会调用其中的notify方法

public void notify(int id, Notification notification)
 {
     notify(null, id, notification);
 }

这就是其中的notify方法,所以我们可以加判断来让它有条件的隐藏

 public void notify(int id, Notification notification)
 {
     if(!notification.isAiqiyiExist){    
         notify(null, id, notification);
     }
 }

目前就只发现这两种,未完待续。。。。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值