Я создаю приложение, которое должно перехватывать уведомления, в частности уведомления 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)
}
Возможно, у кого-то возникла такая же проблема, и он мог бы дать мне решение.
Франческо