標籤:notification監聽 notificationlistener android 攔截通知
監聽,嘿嘿,就是監聽。android手機使用者應該都知道通知,隨著智能穿戴裝置的發展,特別是智能手錶,使用者的需求之一就是把QQ訊息和訊息等顯示到手錶上,那麼怎麼去獲得這些訊息呢?由於,qq訊息和訊息等會以Notification的形式顯示在通知欄裡,所以咱們就可以通過監聽Notification來把它的內容截獲出來。那麼怎麼監聽呢?請聽我娓娓道來…………………………
一、兩個類
NotificationListenerService(通知監聽服務類):哈哈,原來google已經給我們做好了,可是這個是在4.4版本才出現的,所以只能高版本的系統才能使用了。
除了具備正常Service的方法外,它還有:public void onNotificationPosted(StatusBarNotification sbn)和public void onNotificationRemoved(StatusBarNotification arg0)兩個重要的方法。第一個是當系統發送通知時觸發,一個是通知刪除時觸發。
是不是感覺有思路了?那就對了!
StatusBarNotification(狀態列通知):這個是幹哈的?其實就是通知的一個擴充。通過此獲得咱們的Notification mNotification = sbn.getNotification();
除此之外有兩點要注意的,一個是服務需要許可權,一個是要使用者授權。在下面的例子中,我會詳細介紹。
二、小例子
第一步,實現一個服務繼承NotificationListenerService類
public class NotificationService extends NotificationListenerService {
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
// TODO Auto-generated method stub
Notification mNotification = sbn.getNotification();
if (mNotification != null) {
Bundle extras = mNotification.extras;
Intent intent = new Intent(MainActivity.INTENT_ACTION_NOTIFICATION);
intent.putExtras(mNotification.extras);
sendBroadcast(intent);
Notification.Action[] mActions = mNotification.actions;
if (mActions != null) {
for (Notification.Action mAction : mActions) {
int icon = mAction.icon;
CharSequence actionTitle = mAction.title;
PendingIntent pendingIntent = mAction.actionIntent;
}
}
}
}
@Override
public void onNotificationRemoved(StatusBarNotification arg0) {
// TODO Auto-generated method stub
}
}
第二步:註冊服務
<service
android:name="com.study.notificationinterceptor.NotificationService"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" >
<intent-filter>
<action android:name="android.service.notification.NotificationListenerService" >
</action>
</intent-filter>
</service>
第三步:就是用activity或者什麼去接收資訊了
這裡重要的是第一次開啟程式的時候要讓使用者能過
Intent intent = new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS");
startActivity(intent);//來授權
顯示在這裡我就不上代碼了。
三、小結
突然發現,編程是學不完的,重要的是思想和學習能力。因為api一直在更新,時代一直在進步,要與時俱進。come on
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
android監聽Notification