根據我的測試,似乎我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中的這個問題?