检测通知是否已删除

时间:2013-03-19 16:48:49

标签: android android-notifications accessibilityservice

我有以下问题。我想检测通知栏中何时删除通知。

我可以使用AccessbilityService扫描通知并将其ParcelableData强制转换为通知

Notification notif = (Notification) event.getParcelableData();

我的一个想法是,利用点击通知的PendingIntent,但我找不到任何关于如何检测到的信息。

有什么想法吗?我有点绝望......现在试了几个小时。

4 个答案:

答案 0 :(得分:4)

您可以在Notification.Builder上使用setDeleteIntent:

http://developer.android.com/reference/android/app/Notification.Builder.html#setDeleteIntent(android.app.PendingIntent)

它可以用来做你想做的事情(我想这对你来说太晚了,但它可以帮助别人)

答案 1 :(得分:1)

在SO上已经回答了一个非常类似的问题:

Detect a new Android notification

简而言之,可以检测新通知何时出现,但就是这样。您无法检测通知何时被解除。

答案 2 :(得分:1)

据我所知,这是不可能的,除非你有root,但是从昨天发布的android 4.3开始,这是可能的。这里有一些链接:

android developers blog

  

通知访问权限 - 您的应用现在可以访问并与之互动   发布状态栏通知流。你可以显示   它们以您想要的任何方式,包括将它们路由到附近的蓝牙   设备,您可以根据需要更新和解除通知。

android developer website

  

Android 4.3添加了一个新的服务类NotificationListenerService,   允许您的应用接收有关新通知的信息   它们由系统发布。

     

如果您的应用目前使用辅助功能服务API进行访问   系统通知,您应该更新您的应用程序以使用这些API   代替。

android developer website - API description

访问通知

  

通知长期以来一直是受欢迎的Android功能,因为它们   让用户查看整个系统的信息和更新   一个地方。现在在Android 4.3中,应用程序可以观察到的流   具有用户许可的通知并显示通知   以他们想要的任何方式,包括将它们发送到附近的设备   通过蓝牙连接。

     

您可以通过允许注册的新API访问通知   通知监听器服务并经用户许可,接收   通知,因为它们显示在状态栏中。通知   全部交付给您,包含原始应用程序的所有详细信息,   发布时间,内容视图和样式以及优先级。您可以   评估通知,处理或添加中感兴趣的字段   来自您应用的上下文,并将它们路由以您的任何方式显示   选择。

     

新API会在添加,更新通知时为您提供回调功能,   并删除(因为用户解雇它或原始   app取消了它)。你将能够启动附加到的任何意图   通知或其操作,以及从系统中删除它,   允许您的应用提供完整的用户界面   通知。

当然还有this link

中新侦听器的API文档

答案 3 :(得分:0)

如果你扩展NotificationListener并在回调中做你自己的东西,这是可能的: https://developer.android.com/reference/android/service/notification/NotificationListenerService.html