android通知欄Notification點擊,取消,清除響應事件


主要是檢測android通知欄的三種狀態的響應事件

這次在實現推送需求的時候,要用到android通知欄Notification點擊后進入消息頁面,因為要實現一個保存推送用戶名字的功能,我在點擊后處理了這個功能,但是測試發現我點擊刪除或者滑動清除后這個功能並沒有執行,所以才意識到要處理刪除和滑動清除的事件:

首先實現一個BroadcastReceiver

public class NotificationBroadcastReceiver extends BroadcastReceiver {

    public static final String TYPE = "type"; //這個type是為了Notification更新信息的,這個不明白的朋友可以去搜搜,很多
    
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        int type = intent.getIntExtra(TYPE, -1);

        if (type != -1) {
            NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
            notificationManager.cancel(type);
        }

        if (action.equals("notification_clicked")) {
            //處理點擊事件
        }
        
        if (action.equals("notification_cancelled")) {
            //處理滑動清除和點擊刪除事件
        }
    }
}

 

而注冊Notification是這樣的:

Intent intentClick = new Intent(this, NotificationBroadcastReceiver.class);
intentClick.setAction("notification_clicked");
intentClick.putExtra(NotificationBroadcastReceiver.TYPE, type);
PendingIntent pendingIntentClick = PendingIntent.getBroadcast(this, 0, intentClick, PendingIntent.FLAG_ONE_SHOT);

Intent intentCancel = new Intent(this, NotificationBroadcastReceiver.class);
intentCancel.setAction("notification_cancelled");
intentCancel.putExtra(NotificationBroadcastReceiver.TYPE, type);
PendingIntent pendingIntentCancel = PendingIntent.getBroadcast(this, 0, intentCancel, PendingIntent.FLAG_ONE_SHOT);

Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.ic_launcher)
        .setContentTitle(getString(R.string.setting_gcm_title))
        .setContentText(message)
        .setSound(defaultSoundUri)
        .setContentIntent(pendingIntentClick)
        .setDeleteIntent(pendingIntentCancel);

notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(type /* ID of notification */, notificationBuilder.build());  //這就是那個type,相同的update,不同add
 

 

當然不要忘了在AndroidManifest.xml里面注冊

<receiver android:name=".gcm.NotificationBroadcastReceiver">
    <intent-filter>
        <action android:name="notification_cancelled"/>
        <action android:name="notification_clicked"/>
    </intent-filter>
</receiver>

 

這樣就是初步實現了android通知欄Notification點擊,取消,清除響應事件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM