Слушатель уведомлений Android 4.3.X

Я пытаюсь создать приложение, которое использует новую службу Android для чтения всех уведомлений, а также для их удаления, но оно не работает. В манифесте у меня есть:

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

У меня есть класс NotificationListener, который расширяет NotificationListenerService. Я переопределяю два метода: onNotificationPosted (StatusBarNotification sbn), onNotificationRemoved (StatusBarNotification sbn).

Я дал ему разрешение в разделе «Безопасность» -> «Доступ к уведомлениям» ... Но я все еще не могу прочитать всплывающее уведомление. В чем проблема?

Спасибо!


person Javi    schedule 20.12.2013    source источник


Ответы (2)


Android кэширует биндер, возвращенный из onBind, поэтому, если ваши действия очень похожи и ваше приложение привязывается первым, то ваш биндер будет возвращен системному, а не системному биндеру (возвращен из super.onBind(intent)

К счастью, Android вносит ключи в кеш связывателя на основе действия намерения. Я бы дал вашему намерению некоторое фиктивное действие, чтобы оно не смешивалось с системным. Я решил ту же проблему, сделав это. ПРИМЕЧАНИЕ: категорий недостаточно.

person Gabe    schedule 21.12.2013
comment
Итак, вы говорите мне, что, поскольку мой код не делает ничего особенного (пока), Android просто опускает его? - person Javi; 21.12.2013
comment
Извините, я неправильно понял, что вы также переопределили onBind. Попробуйте переключить разрешение. Если ваша служба прослушивания уведомлений когда-либо выйдет из строя, Android действительно плохо перезапустит ее и отправит уведомления. Переключение разрешения (или перезагрузка телефона) — это единственные найденные мной способы заставить Android повторно привязаться к нему. - person Gabe; 22.12.2013
comment
Привет! Вы не ошиблись, я переопределил onBind, но потом увидел, что в этом нет необходимости. Под переключением разрешения вы подразумеваете его отмену? в коде или в Безопасность-›Доступ к уведомлениям..? Спасибо! - person Javi; 23.12.2013
comment
Да, снимите галочку и проверьте еще раз. Также попробуйте проверить logcat, когда приходит уведомление. Я проверяю уведомления, отправляя себе сообщение видеовстречи с одной из моих дополнительных учетных записей. - person Gabe; 23.12.2013
comment
Это было очень полезно, и единственный ответ, который мне удалось найти в Интернете, спасибо! - person Edeph; 17.06.2015
comment
@Gabe переключение разрешения на доступ к уведомлениям не сработало для меня, но простой перезапуск помог! Спасибо - person Lord Sepid; 11.11.2016

убедитесь, что вы дали разрешение на прослушивание уведомлений приложения, переключение снова приведет к воссозданию службы

person code ketty    schedule 15.11.2018