2015-04-01 23 views
1

我有派生自NotificationListenerService的类,它在应用程序启动时自动创建并启动。 但是我想稍后从一个活动开始延迟服务,而不是在应用程序启动时自动启动。是否有可能做到这一点? 清单是:我可以在代码中显式启动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和其他人不能。

回答

-2

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

+0

我该如何更改清单以防止它自动启动? – Gruntcakes 2015-04-01 18:12:19

+0

移除意图过滤器。 – 2015-04-01 18:13:37

+0

在使用NotificationListenerService之前,用户必须通过该设置授予应用程序通知访问权限。但是,如果从清单中删除意图过滤器,则应用程序不会出现在设置中,因此用户无法授予权限,因此未经许可服务将无法启动。看起来像操作系统需要意图过滤器在它将在设置中显示应用程序之前。 – Gruntcakes 2015-04-01 18:29:12

相关问题