NotificationListener在某些设备上未收到通知

时间:2019-01-23 15:56:30

标签: android notification-listener

我正在制作一个需要拦截通知的应用程序,尤其是Google Maps通知。为此,我使用了Android的NotificationListenerService。问题在于,在某些设备上(尤其是在Android 9 Pie上),在授予通知访问权限后,监听器不会立即启动。同样,即使服务已启动,它也不会收到任何通知。该问题解决了删除和重置权限的问题,但这很烦人。
以前,我还有另一个问题,服务已被系统破坏,但是此解决方案Notification Listener Service does not work after app is crashed

因此,在侦听器中,我实现了上面链接的解决方案。但这似乎不足以使其正常工作。正如我之前所说,大多数情况下,删除和重置通知访问权限足以“触发”侦听器,并且它开始正常工作,所以为什么它不应该第一次工作?

这是我的代码:     重写fun onNotificationPosted(sbn:StatusBarNotification?){         appManager?.postNotification(sbn)     }

override fun onNotificationRemoved(sbn: StatusBarNotification?) {
    super.onNotificationRemoved(sbn)
    appManager?.removedNotification(sbn)
}

override fun onListenerConnected() {
    super.onListenerConnected()
    setLocale()

    isListenerConnected = true

    //code to set the listener as foreground...
}

override fun onListenerDisconnected() {
    super.onListenerDisconnected()
    isListenerConnected = false
}

override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
    Log.e("NotificationListener", "Alarm triggered at " + SimpleDateFormat().format(Date()))

    if (intent != null && intent.action == Constants.REBIND_NOTIFICATION_LISTENER_ACTION) {
        tryReconnectService()//switch on/off component and rebind
    }
    //START_STICKY  to order the system to restart your service as soon as possible when it was killed.
    return Service.START_STICKY
}

override fun onBind(intent: Intent?): IBinder? {
    return super.onBind(intent)
}

也许有人遇到同样的问题,可以给我解决方案。

弗朗切斯科

0 个答案:

没有答案