我可以在代码中显式启动NotificationListenerService,而不是由操作系统为我启动吗?

Gru*_*kes 5 android android-service android-service-binding

我有一个从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>
Run Code Online (Sandbox Code Playgroud)

请注意,在使用NotificationListenerService之前,用户必须通过设置授予应用程序通知访问权限。但是,如果从清单中删除意图过滤器,则应用程序不会出现在设置中,因此用户无法授予权限,因此未经许可,服务无法启动。似乎操作系统需要该意图过滤器才能在设置中显示应用程序。

更新: BIND_NOTIFICATION_LISTENER_SERVICE 的文档说:

必须由NotificationListenerService 要求,以确保只有系统可以绑定到它。

所以我想这意味着只有操作系统可以启动NotificationListenerService,其他人都不能。

Gab*_*han -1

是的。为服务创建一个 Intent,然后调用 startService。