android通知栏Notification的PendingIntent的flag传值

android 12开始,PendingIntent修复了漏洞,Intent的内容需要做成可变的,传值的时候flag传PendingIntent.FLAG_UPDATE_CURRENT会崩溃,传PendingIntent.FLAG_MUTABLE,接收的Activity拿到的值一直是旧的。各种谷歌和问谷歌ai,还是找不到答案。最后,突然灵光一闪,去集成的IM厂商推送sdk里翻翻看别人是怎么写的,混淆过后的代码,一个个看,还是找到了,传了一个int值,PendingIntent的常量里又没有,猜测是两个常量相加,结果真的是。

int flag = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S?PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT:PendingIntent.FLAG_UPDATE_CURRENT;

发送通知的代码,整体如下:

     // 创建通知对象
        Notification notification = new Notification();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel channel = new NotificationChannel("notify_im", "系统通知", NotificationManager.IMPORTANCE_LOW);
            channel.setSound(null, null);
            channel.enableVibration(false);
            manager.createNotificationChannel(channel);
            notification = new Notification.Builder(context.getApplicationContext(), "notify_im").setOnlyAlertOnce(true).setAutoCancel(true).build();
        }
        // 设置显示时间
        notification.when = System.currentTimeMillis();
        // 设置通知显示的图标
        notification.icon = R.mipmap.im_logo;
        // 设置通知的特性: 通知被点击后,自动消失
        notification.flags = Notification.FLAG_AUTO_CANCEL;
        notification.sound = null;
        notification.defaults = Notification.DEFAULT_LIGHTS;
        // 设置通知的显示视图
        notification.contentView = new RemoteViews(context.getPackageName(),R.layout.notification_im);
        notification.contentView.setTextViewText(R.id.tv_title,isGroup?"您有新的群消息":"收到来自"+nickName+"的新消息");
        notification.contentView.setImageViewResource(R.id.iv_logo,R.mipmap.im_logo);
        //设置跳转界面意图
        int flag = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S?PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT:PendingIntent.FLAG_UPDATE_CURRENT;
        notification.contentIntent =PendingIntent.getActivity(context, 0, intent, flag);

        // 发出通知
        manager.notify(notificationId, notification);

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值