42

如何在 android 中阅读所有即将到来的通知。是否可以使用广播接收器来监听传入的通知以及读取通知信息的能力。

4

3 回答 3

27

首先,您必须在清单中声明您接收通知的意图,以便获得android.permission.BIND_NOTIFICATION_LISTENER_SERVICE许可。

AndroidManifest.xml:

<service android:name=".NotificationListener"
         android:label="@string/service_name"
         android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
    <intent-filter>
        <action android:name="android.service.notification.NotificationListenerService" />
    </intent-filter>
</service>

然后创建一个NotificationListenerService类并覆盖该onNotificationPosted函数。

有关更多信息,请在此处阅读开发人员参考:https ://developer.android.com/reference/android/service/notification/NotificationListenerService.html

另请查看这个简单的示例应用程序以获取实施指导:https ://github.com/kpbird/NotificationListenerService-Example/

于 2014-01-12T19:33:11.450 回答
12

使用NotificationListenerService我们可以轻松读取所有应用程序的通知。在此处查看完整的演示代码

于 2015-05-31T18:53:06.217 回答
2

您需要在 onNotificationPosted 中这样做才能获取所有消息

if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)){
        Parcelable b[] = (Parcelable[]) extras.get(Notification.EXTRA_MESSAGES);

        if(b != null){

            for (Parcelable tmp : b){

                Bundle msgBundle = (Bundle) tmp;
                content = content + msgBundle.getString("text") + "\n";

            /*Set<String> io = msgBundle.keySet(); // To get the keys available for this bundle*/

            }
        }
    }
于 2018-07-26T09:02:46.173 回答