android通知欄Notification點擊,取消,清除響應事件 - 狼來了
這次在實現推送需求的時候,要用到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點擊,取消,清除響應事件
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!