NotificationListener не получает уведомления на некоторых устройствах - PullRequest
0 голосов
/ 23 января 2019

Я создаю приложение, которое должно перехватывать уведомления, в частности уведомления Google Maps.Для этой цели я использовал службу NotificationListenerService для Android.Проблема в том, что на некоторых устройствах (особенно на Android 9 Pie) слушатель не запускается сразу, как только разрешение на доступ к уведомлению предоставлено.Также, даже если служба запущена, она не получает никаких уведомлений.Проблема решает удаление и сброс разрешения, но это очень раздражает.
Раньше у меня была другая проблема, служба уничтожалась системой, но это решение Служба прослушивания уведомлений не работает после сбоя приложения

Итак, в слушателе я реализовал решение, связанное выше.Но этого, кажется, недостаточно, чтобы заставить его работать должным образом.Как я уже говорил, в большинстве случаев удаления и сброса доступа к уведомлениям достаточно, чтобы «вызвать» слушателя, и он начинает работать правильно, так почему же он не должен работать в первый раз?

Это мой код: переопределить 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)
}

Возможно, у кого-то возникла такая же проблема, и он мог бы дать мне решение.

Франческо

...