NotificationListenerService是通過系統調起的服務,當有應用發起通知的時候,系統會將通知的動作和信息回調給NotificationListenerService。
在繼承NotificationListenerService服務實現自己邏輯之前,需要在配置文件中添加如下代碼,獲取權限。
<service android:name=".NotificationListener"
android:label="@string/service_name"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
<intent-filter>
<action android:name="android.service.notification.NotificationListenerService" />
</intent-filter>
</service>
這樣,在系統設置中就能找到開啓該服務的開關,以miui爲例,在設置--安全與隱私--通知讀取權限
該服務中有以下兩個抽象方法,是需要開發者在使用該服務的時候實現的。
public class NotificationCollectorService extends NotificationListenerService {
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
Log.i("zpf", "open"+"-----"+sbn.toString());
}
@Override
public void onNotificationRemoved(StatusBarNotification sbn) {
Log.i("zpf", "shut"+"-----"+sbn.toString());
}
}
也就是說當系統發現某應用產生通知或者用戶刪除某通知,都會回調該服務的這兩個函數,函數的參數StatusBarNotification包含着該通知的具體信息。
如果是在Android Wear開發中,使用該方法捕獲手機的通知,然後同步到手錶中,就是使用該服務進行的中轉