NotificationListenerService

NotificationListenerService

我有一个从清单启动的NotificationListenerService。该服务有效并且正在处理通知。我希望能够停止,解除绑定和删除(称为onDestroy)。有人可以提供一个最小的例子吗?

我已经尝试实现ServiceConnection以及unbind()和selfstop(),但是它仍然不会在onDestroy上运行。我也尝试过内联设置NotificationListenerService,但不知道如何绑定它。

最佳答案

What's new with Notifications in Android N talk中所述,NotificationListenerService永远绑定到系统。由于它们始终受系统约束,因此它将永远不会被破坏。

从Android N开始,您可以调用requestUnbind()停止收听,并调用NotificationListenerService.requestRebind()重新启动,但是在此之前,还没有特定方法可以导致系统与NotificationListenerService解除绑定。

当然,您可以使用以下代码完全禁用该服务:

PackageManager pm  = getApplicationContext().getPackageManager();
ComponentName componentName = new ComponentName(getPackageName(),
     ".YourNotificationListenerService");
  pm.setComponentEnabledSetting(componentName,
    PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
    PackageManager.DONT_KILL_APP);


这将阻止服务完全运行。不幸的是,这可能会产生副作用,系统会暂时将您的NotificationListenerService列入黑名单(因为它反复绑定失败),因此仅当您永久/半永久禁用它时才应使用。

09-15 21:56