android通知栏显示,通知栏点击事件监听

android通知是通过Notification来实现的显示在通知栏,不管是系统通知还是本地通知都可以通过Notification显示在通知栏中。
通知显示参考:https://blog.csdn.net/vipzjyno1/article/details/25248021

通知栏点击事件的监听:使用BroadCastReceiver

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

public class NotificationClickReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        //todo 跳转之前要处理的逻辑
        Log.i("TAG", "userClick:我被点击啦!!! ");
        Intent newIntent = new Intent(context, Main2Activity.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(newIntent);
    }
}

在清单文件中注册

 <receiver
         android:name=".NotificationClickReceiver">
 </receiver>

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

// 版本升级通知框
                NotificationManager notificationManager = (NotificationManager) MapActivity.this.getSystemService(Context.NOTIFICATION_SERVICE);
                Notification.Builder builder1 = new Notification.Builder(MapActivity.this);
                // 通知框兼容 android 8 及以上
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                    NotificationChannel channel = new NotificationChannel("11212313131", "NotificationName", NotificationManager.IMPORTANCE_DEFAULT);
                    channel.enableLights(true);
                    channel.setShowBadge(true);
                    notificationManager.createNotificationChannel(channel);
                    builder1.setChannelId("123456");
                }
                builder1.setSmallIcon(R.mipmap.touxiang); //设置图标
                builder1.setContentTitle("这是一个通知"); //设置标题
                builder1.setContentText("这是消息内容"); //消息内容
                builder1.setWhen(System.currentTimeMillis()); //发送时间
                builder1.setDefaults(Notification.DEFAULT_ALL); //设置默认的提示音,振动方式,灯光
                builder1.setAutoCancel(true);//打开程序后图标消失
                Intent intent = new Intent(Activity.this, NotificationClickReceiver.class);
                intent.putExtra("url","www.baidu.com");
                PendingIntent pendingIntent = PendingIntent.getBroadcast(Activity.this, 0, intent, 0);
                builder1.setContentIntent(pendingIntent);
                Notification notification1 = builder1.build();
                notificationManager.notify(124, notification1); // 通过通知管理器发送通知

如果需要携带什么参数就在这里的intent传递即可,NotificationClickReceiver可以接收到发送过来的intent,在onReceive()中处理跳转逻辑即可

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值