博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android通知栏Notification点击,取消,清除响应事件
阅读量:5051 次
发布时间:2019-06-12

本文共 2369 字,大约阅读时间需要 7 分钟。

主要是检测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里面注册

 

这样就是初步实现了android通知栏Notification点击,取消,清除响应事件

转载于:https://www.cnblogs.com/qianyukun/p/5946792.html

你可能感兴趣的文章
关于计算机编程语言——编译型和解释型_2
查看>>
oracle 约束constraint
查看>>
Javascript中的面向对象和定时器, BOM
查看>>
Reading comprehension HDU - 4990 (矩阵快速幂 or 快速幂+等比数列)
查看>>
ASP 手工语句
查看>>
Java Build Practice 1:Ant
查看>>
3.RxJava详解
查看>>
【小波变换】STL版 一维离散小波变换(DWT)库,完全按matlab的wavelet toolbox 的API实现的...
查看>>
作业六:小学生四则运算之NABCD模型与产品Backlog。
查看>>
SQL 十位随机数(大小写字母+数据)
查看>>
[BZOJ]1116: [POI2008]CLO
查看>>
c#泛型action<T>委托
查看>>
__int128的实现
查看>>
R 读取clipboard内容 (MAC)
查看>>
Problem - 1118B - Codeforces(Tanya and Candies)
查看>>
jdk1.8 api 下载
查看>>
svn 图标不显示
查看>>
getElement的几中属性介绍
查看>>
iOS 使用Quartz 2D画虚线 【转】
查看>>
平面最接近点对
查看>>