在 Android 上监听通知

Posted

技术标签:

【中文标题】在 Android 上监听通知【英文标题】:Listening for Notification on Android 【发布时间】:2011-09-15 17:04:23 【问题描述】:

关于 android 编程的通知,我有一些疑问。我已经阅读了通知管理器、通知和通知生成器,但它似乎不允许它监听通知。

我想要做的是当任何应用程序发送通知时,我将能够知道它的内容。这真的可能吗?如何做到?

【问题讨论】:

【参考方案1】:

随着 API 级别 18 的发布,现在有一个 NotificationListenerService。 http://developer.android.com/reference/android/service/notification/NotificationListenerService.html

【讨论】:

【参考方案2】:

目前没有通用的方法来拦截从其他应用程序发送的通知。

【讨论】:

感谢您的回复。来自特定应用程序的拦截通知怎么样?这可能吗? 仍然没有运气:这是一个安全问题(不能出现一些不良应用程序并拦截来自另一个应用程序的通知)。请参阅groups.google.com/group/android-beginners/browse_thread/thread/… 进行更长时间的讨论。 谢谢.. 但是我想知道是否可以从您自己的应用程序中侦听和读取通知? 不,他们允许您做的限制是取消所有通知。您可以使用PendingIntents 和BroadcastReceivers 来监听您的通知的点击,但如果您需要跟踪通知的内容,则必须在创建通知时手动进行。 我猜你可以(参见 Tasker 或类似的应用程序)。需要先在辅助功能设置中添加此应用,然后才能这样做。【参考方案3】:

你可能想看看

AccessibilityEvent

通知类型

通知状态改变 - 表示显示通知的事件。

类型:TYPE_NOTIFICATION_STATE_CHANGED

属性:

getEventType() - 事件的类型。 getClassName() - 源的类名。 getPackageName() - 源的包名。 getEventTime() - 事件时间。 getText() - 源子树的文本。 getParcelableData() - 发布的通知。 getText() - 提供更多上下文的文本。

【讨论】:

【参考方案4】:

要在 android 中侦听所有传入通知,您需要使用 NotificationListenerService 并在清单文件中声明意图。这样你就可以获得(android.permission.BIND_NOTIFICATION_LISTENER_SERVICE)权限

查看这篇文章以获得更好的理解和完整的代码。

https://androidprogrammatically425516919.wordpress.com/2020/04/19/how-to-listen-whatsapp-notification-on-android-programmatically/

【讨论】:

以上是关于在 Android 上监听通知的主要内容,如果未能解决你的问题,请参考以下文章

Android无法通知项目评估监听器

Android NotificationListenerService使用方式(详细步骤+源码)

PubNub GCM通知无法在Android 5.0及更高版本上运行

Android 通知区域自定义

Android Lollipop 应用通知设置

低功耗蓝牙监听多个特征通知