我有派生自 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 而其他人都不能。