从通知栏中删除其他应用程序的通知

时间:2011-03-08 17:06:08

标签: android android-notifications android-notification-bar

我想从通知栏中显示的其他应用程序中删除通知。那可能吗?据我所知,NotificationManager.cancelAll();仅取消调用应用程序显示的通知。

为什么我要这样做?

我有一个通过网页读取和发送短信的应用程序,我希望这个应用程序与现有的SMS应用程序如Handcent SMS共同退出。我希望它的工作方式是,当通过网页阅读新收到的短信时,我想取消Handcent SMS显示的新SMS通知,因为现在已经读取了新短信。我正在将短信标记为已读,并且一旦我打开Handcent短信,Handcent SMS就会将其识别为已阅读,但是直到我点击实际的短信,通知仍然存在。

有两种情形; 1号:

  1. Android设备收到短信。
  2. 通知由Handcent SMS显示。
  3. 用户在设备上阅读短信。
  4. Handcent SMS删除通知并将SMS标记为已读。
  5. Senario 2:

    1. Android设备收到短信。
    2. 通知由Handcent SMS显示。
    3. 用户通过网络界面阅读短信。
    4. 我的应用程序清除了Handcent SMS显示的新SMS通知,并将SMS标记为已读。
    5. 这可能吗?

3 个答案:

答案 0 :(得分:15)

从Android 4.3开始,您现在可以取消任何应用的通知。

您需要将应用注册为NotificationListenerService,然后拨打NotificationListenerService.cancelNotification(String pkg, String tag, int id)取消一个通知。

答案 1 :(得分:5)

您可以使用NotificationListenerService关闭任何通知:

public class NotificationListener extends NotificationListenerService {

    @Override
    public void onNotificationPosted(StatusBarNotification sbn) {
      cancelNotification(sbn.getKey());
    }
}

您的申请必须具有BIND_NOTIFICATION_LISTENER_SERVICE权限。 https://developer.android.com/reference/android/service/notification/NotificationListenerService.html

答案 2 :(得分:4)

您可以使用NotificationManager取消自己的通知 但是你无法取消其他应用的通知,这是不可能的。