2011-03-08 105 views
17

我想從通知欄中顯示的其他應用程序中刪除通知。那可能嗎?就我所知,NotificationManager.cancelAll();僅取消了調用應用程序顯示的通知。從其他應用程序中刪除通知欄中的通知

爲什麼我要這樣做?

我有一個應用程序通過網頁讀取和發送短信,我希望此應用程序與Handcent SMS等現有SMS應用程序共同退出。我希望它能夠工作的方式是,當通過網頁閱讀新收到的短信時,我想要取消Handcent SMS顯示的新短信通知,因爲現在已閱讀新短信。我將短信標記爲已讀,Handcent SMS將其識別爲只讀一次,我打開Handcent SMS,但通知仍然存在,直到我點擊實際的短信。

有兩個senarios;編號1:

  1. android設備收到短信。
  2. Handcent SMS顯示通知。
  3. 用戶讀取設備上的SMS。
  4. Handcent SMS刪除通知並將SMS標記爲已讀。

塞納里奧2:

  1. 該機器人設備接收SMS。
  2. Handcent SMS顯示通知。
  3. 用戶通過網頁界面讀取短信。
  4. 我的應用程序清除Handcent SMS顯示的新SMS通知並將SMS標記爲已讀。

這可能嗎?

+0

爲什麼你會想要這樣做?我不希望任何應用程序竊取我的通知。 – 2011-03-08 17:09:00

+6

埃米爾,我告訴過你爲什麼要在「爲什麼要這樣做? :)。 – johboh 2011-03-09 06:13:43

+0

@johboh你現在可以取消其他應用程序的通知了嗎? – 2015-03-14 08:58:16

回答

4

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

+1

我有點困惑。誰的答案是對的?你的,還是@Oasis Feng? – 2015-04-22 18:09:44

14

從Android 4.3開始,您現在可以取消任何應用程序的通知。

您需要註冊您的應用程序爲NotificationListenerService,然後致電NotificationListenerService.cancelNotification(String pkg, String tag, int id)取消一個通知。

+2

請注意,創建NotificationListenerService實例並調用cancelNotification()將導致NullPointerException。您必須擴展NotificationListenerService並啓動服務,然後從服務中取消通知。 – black 2014-03-30 06:46:56

+0

我在onNotificationPosted()中運行它,但它不取消它。你可以看一下嗎? http://stackoverflow.com/questions/29803218/cant-cancel-notification-using-notificationlistenerservice – 2015-04-22 18:10:59

+0

請注意,此方法自Lollipop以來已棄用,它的簽名已更改,因爲@QuadX在其答案中指出 – 2016-12-29 13:46:57