У меня есть класс, производный от NotificationListenerService, и он автоматически создается и запускается для меня при запуске приложения. Однако я хотел бы лениво запускать службу позже из действия и не запускать ее автоматически при запуске приложения. Можно ли сделать это? Манифест:
<service android:name=".MyNotificationListener"
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>
ПРИМЕЧАНИЕ. Прежде чем можно будет использовать NotificationListenerService, пользователь должен предоставить приложению доступ к уведомлению через настройку. Однако, если фильтр намерений удален из манифеста, приложение не отображается в настройках, и, следовательно, пользователь не может предоставить разрешение, поэтому без разрешения служба не может быть запущена. Похоже, что ОС нуждается в том, чтобы этот фильтр намерений был там, прежде чем он отобразит приложение в настройках.
ОБНОВЛЕНИЕ: в документации для BIND_NOTIFICATION_LISTENER_SERVICE сказано:
Должен быть обязательным для NotificationListenerService, чтобы гарантировать, что только система может привязаться к нему.
Я предполагаю, что это означает, что только ОС может запускать NotificationListenerService, и никто другой не может.