从其他应用程序中删除通知栏中的通知
我想从通知栏中显示的其他应用程序中删除通知。那可能吗?就我所知,NotificationManager.cancelAll();
仅取消了调用应用程序显示的通知。从其他应用程序中删除通知栏中的通知
为什么我要这样做?
我有一个应用程序通过网页读取和发送短信,我希望此应用程序与Handcent SMS等现有SMS应用程序共同退出。我希望它能够工作的方式是,当通过网页阅读新收到的短信时,我想要取消Handcent SMS显示的新短信通知,因为现在已阅读新短信。我将短信标记为已读,Handcent SMS将其识别为只读一次,我打开Handcent SMS,但通知仍然存在,直到我点击实际的短信。
有两个senarios;编号1:
- android设备收到短信。
- Handcent SMS显示通知。
- 用户读取设备上的SMS。
- Handcent SMS删除通知并将SMS标记为已读。
塞纳里奥2:
- 该机器人设备接收SMS。
- Handcent SMS显示通知。
- 用户通过网页界面读取短信。
- 我的应用程序清除Handcent SMS显示的新SMS通知并将SMS标记为已读。
这可能吗?
您可以使用NotificationManager取消自己的通知。
但是你不能取消其他应用程序的通知,这是不可能的。
我有点困惑。谁的答案是对的?你的,还是@Oasis Feng? – 2015-04-22 18:09:44
从Android 4.3开始,您现在可以取消任何应用程序的通知。
您需要注册您的应用程序为NotificationListenerService
,然后致电NotificationListenerService.cancelNotification(String pkg, String tag, int id)
取消一个通知。
请注意,创建NotificationListenerService实例并调用cancelNotification()将导致NullPointerException。您必须扩展NotificationListenerService并启动服务,然后从服务中取消通知。 – black 2014-03-30 06:46:56
我在onNotificationPosted()中运行它,但它不取消它。你可以看一下吗? http://*.com/questions/29803218/cant-cancel-notification-using-notificationlistenerservice – 2015-04-22 18:10:59
请注意,此方法自Lollipop以来已弃用,它的签名已更改,因为@QuadX在其答案中指出 – 2016-12-29 13:46:57
您可以关闭任何通知使用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
为什么你会想要这样做?我不希望任何应用程序窃取我的通知。 – 2011-03-08 17:09:00
埃米尔,我告诉过你为什么要在“为什么要这样做? :)。 – johboh 2011-03-09 06:13:43
@johboh你现在可以取消其他应用程序的通知了吗? – 2015-03-14 08:58:16