android定义通知栏点击事件

核心思想:

传统的PendingIntent只能跳转到一个页面,这样会有一个bug,就是假如你本来在activity1,然后点击通知跳转到activity1,界面会重新加载而且点击返回键会返回上一个没有修改的activity1,假如这个activity已经被修改,但是你点击了返回键就会回到之前那个,没有被修改的,这样有两个相同的activity会感觉很奇怪而且前一个activity可能是错误的,这样会产出bug。所以我们不能使用

PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(),0,intent,PendingIntent.FLAG_CANCEL_CURRENT);

应该使用

 PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), id1, clickIntent, 
 PendingIntent.FLAG_UPDATE_CURRENT);

也就是可以使用广播来控制点击事件

1. 新建一个BroadCastReceiver类,并且在清单文件中注册!

  <receiver
         android:name=".NotificationClickReceiver">
  </receiver>
public class NotificationClickReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        //todo 跳转之前要处理的逻辑
    }
}

2. 在你需要创建通知栏的地方

Intent clickIntent = new Intent(getApplicationContext(),NotificationClickReceiver.class); //点击通知之后要发送的广播
            int id1 = (int) (System.currentTimeMillis() / 1000);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(),
             id1, clickIntent, PendingIntent.FLAG_UPDATE_CURRENT);
            return new Notification.Builder(getApplicationContext(), id)
                    .setContentTitle(title)
                    .setContentText(content)
                    .setSmallIcon(android.R.drawable.stat_notify_more)
                    .setAutoCancel(true)
                    .setDefaults(Notification.DEFAULT_ALL)
                    .setContentIntent(pendingIntent);
                    NotificationUtils notificationUtils = new NotificationUtils(this);
        notificationUtils.sendNotification(title, info);

这样就大功告成了,你可以在点击事件写自己的逻辑代码

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值