我有以下问题。我想检测何时从通知栏中删除了通知。
我可以使用 AccessbilityService 扫描通知并将其 ParcelableData 转换为通知
Notification notif = (Notification) event.getParcelableData();
我的一个想法是,利用通知的 PendingIntent 是否已被点击,但我找不到任何关于如何检测的信息。
有任何想法吗?我有点绝望......现在尝试了几个小时。
我有以下问题。我想检测何时从通知栏中删除了通知。
我可以使用 AccessbilityService 扫描通知并将其 ParcelableData 转换为通知
Notification notif = (Notification) event.getParcelableData();
我的一个想法是,利用通知的 PendingIntent 是否已被点击,但我找不到任何关于如何检测的信息。
有任何想法吗?我有点绝望......现在尝试了几个小时。
您可以在 Notification.Builder 上使用 setDeleteIntent:
它可以用来做你想做的事(我想这对你来说太晚了,但它可以帮助别人)
据我所知,除非你有root,否则这是不可能的,但是从昨天发布的android 4.3 开始,这是可能的。这里有一些链接:
通知访问——您的应用程序现在可以在状态栏通知发布时访问并与之交互。您可以以任何您想要的方式显示它们,包括将它们路由到附近的蓝牙设备,并且您可以根据需要更新和关闭通知。
Android 4.3 添加了一个新的服务类 NotificationListenerService,它允许您的应用在系统发布新通知时接收有关它们的信息。
如果您的应用当前使用无障碍服务 API 来访问系统通知,您应该更新您的应用以改用这些 API。
访问通知
通知长期以来一直是一种流行的 Android 功能,因为它们让用户可以在一个地方查看来自整个系统的信息和更新。现在在 Android 4.3 中,应用程序可以在用户许可的情况下观察通知流,并以他们想要的任何方式显示通知,包括将它们发送到通过蓝牙连接的附近设备。
您可以通过新的 API 访问通知,这些 API 允许您注册通知侦听器服务,并在用户许可的情况下接收状态栏中显示的通知。通知将完整发送给您,其中包含有关原始应用程序、发布时间、内容视图和样式以及优先级的所有详细信息。您可以评估通知中感兴趣的字段,处理或添加应用程序的上下文,并以您选择的任何方式路由它们以进行显示。
新 API 在添加、更新和删除通知时为您提供回调(因为用户关闭它或原始应用程序撤回它)。您将能够启动附加到通知或其操作的任何意图,以及将其从系统中关闭,从而允许您的应用程序为通知提供完整的用户界面。
当然还有这个新监听器的 API 文档,在这个链接中
如果您扩展 NotificationListener 并在回调中做自己的事情,这是可能的: https ://developer.android.com/reference/android/service/notification/NotificationListenerService.html