3

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

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

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

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

有任何想法吗?我有点绝望......现在尝试了几个小时。

4

4 回答 4

4

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

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

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

于 2014-11-10T14:12:15.850 回答
1

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

检测新的 Android 通知

简而言之,可以检测到新通知何时出现,仅此而已。您无法检测到通知何时被解除。

于 2013-03-19T17:36:26.260 回答
1

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

安卓开发者博客

通知访问——您的应用程序现在可以在状态栏通知发布时访问并与之交互。您可以以任何您想要的方式显示它们,包括将它们路由到附近的蓝牙设备,并且您可以根据需要更新和关闭通知。

安卓开发者网站

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

如果您的应用当前使用无障碍服务 API 来访问系统通知,您应该更新您的应用以改用这些 API。

android 开发者网站 - API 说明

访问通知

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

您可以通过新的 API 访问通知,这些 API 允许您注册通知侦听器服务,并在用户许可的情况下接收状态栏中显示的通知。通知将完整发送给您,其中包含有关原始应用程序、发布时间、内容视图和样式以及优先级的所有详细信息。您可以评估通知中感兴趣的字段,处理或添加应用程序的上下文,并以您选择的任何方式路由它们以进行显示。

新 API 在添加、更新和删除通知时为您提供回调(因为用户关闭它或原始应用程序撤回它)。您将能够启动附加到通知或其操作的任何意图,以及将其从系统中关闭,从而允许您的应用程序为通知提供完整的用户界面。

当然还有这个新监听器的 API 文档,在这个链接中

于 2013-07-25T21:32:38.433 回答
0

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

于 2015-04-03T19:45:09.393 回答