在 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/… 进行更长时间的讨论。 谢谢.. 但是我想知道是否可以从您自己的应用程序中侦听和读取通知? 不,他们允许您做的限制是取消所有通知。您可以使用PendingIntent
s 和BroadcastReceiver
s 来监听您的通知的点击,但如果您需要跟踪通知的内容,则必须在创建通知时手动进行。
我猜你可以(参见 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 NotificationListenerService使用方式(详细步骤+源码)