根据我的测试,似乎我Android应用程序中的NotificationListenerService
(NLS)没有绑定到Android 8(奥利奥)上的系统。我将我的应用程序定位到SDK版本26,以使其与新操作系统兼容。NotificationListenerService没有绑定到Android 8上的SystemUI(奥利奥)
在Android N之前,NLS服务永远绑定到SystemUI (Ref: Google I/O 2016)。从Android N开始,NLS服务中引入了两种新方法:requestRebind(ComponentName)
和requestUnbind()
。
在Android Oreo中,有适用于服务的新Background Execution Limits。但是,它不适用于某些服务,例如“另一个应用程序绑定到的通知监听器”。这是我的用例,因为我正在使用应该绑定到SystemUI的NLS服务。
但是,正如我所观察到的,该服务永远不会绑定到SystemUI。另外,即使我明确地呼叫requestRebind(ComponentName)
,该服务也永远不会受到束缚,因此它不起作用,因为这意味着我无法收听通知。
如何解决Android Oreo中的这个问题?