android監聽Notification

來源:互聯網
上載者:User

標籤: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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.