19

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

我为什么要这样做?

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

有两个场景;1号:

  1. 安卓设备收到一条短信。
  2. Handcent SMS 显示通知。
  3. 用户在设备上阅读短信。
  4. Handcent SMS 删除通知并将 SMS 标记为已读。

情景 2:

  1. 安卓设备收到一条短信。
  2. Handcent SMS 显示通知。
  3. 用户通过网页界面阅读短信。
  4. 我的应用程序清除了 Handcent SMS 显示的新 SMS 通知,并将 SMS 标记为已读。

这可能吗?

4

3 回答 3

17

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

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

于 2013-07-28T16:45:48.897 回答
8

您可以使用 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

于 2016-11-12T10:40:18.143 回答
4

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

于 2011-03-08T18:00:05.443 回答