解决Notification不显示(祥)--------Android 8.0后Notification的用法,以及Intent与PendingIntent的区别

前言:Android8.0后学过第一行代码第二版的人都会踩的坑之----Notification
原因: Android8.0后引进了NotificationChannel
主题:Android8.0后 Notification的基本使用操作
1.首先先获取NotificationManager:
方法如下:直接调用Activity的getSystemService(String name)方法获取
参数就直接设置为Context.NOTIFICATION_SERVICE-----该参数等价于字符串notification

NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

2进行版本判断, 若版本大于等于8.0,则获取NotificationChannel对象并且进行绑定:
获取和判断的方法如下:

        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
            NotificationChannel channel = new NotificationChannel("Message", "通知", NotificationManager.IMPORTANCE_HIGH);
            manager.createNotificationChannel(channel);
        }

参数分析:第一个参数需传入id,id要结合Notification的id,下面会提到,这里传入"Message",第二个参数也是一个字符串(可以理解成提示作用),一般自己按功能决定(可任意),比如我想简单的实现通知功能,就传入"通知"
第三个参数:通知的重要程度, 这里传入NotificationManager.IMPORTANCE_HIGH
重要程度值的汇总会在下文附上
3.创建Notification:

        Notification notification = new NotificationCompat.Builder(this,"Message")
                .setContentText("恭喜您,打开通知成功")
                .setContentTitle("开启通知")
                .setAutoCancel(true)
                .setSmallIcon(R.drawable.ic_back)
                .setContentIntent(pendingIntent)
                .build();

分析: 通过NotificationCompat.Builder(Context context, String id)中的build获取Notification----------Notification的常用属性在下文会附上
参数1:Context,这里还是直接传入this就好,因为活动本身就是间接继承Context
参数2:id,这里依旧传入“Message”-----因为要去channel里的id相互对应

4.最后调用NotificationManager的notify方法将通知显示出来:

manager.notify(1,notification);

分析: 参数一,传入一个id,一般也是自定义,有时候若需要使用该notifaction就可能用到
参数二,就是我们的notification对象
======================================
最后运行就可以了。
重要程度参考值:即上文获取NotificationChannel的第三个参数:
在这里插入图片描述

下面附上Notification的基本属性:
在这里插入图片描述
最后再加一个小点: PendingIntent的获取方式:

        Intent intent = new Intent(this, MainActivity.class);
        PendingIntent pendingIntent =  PendingIntent.getActivity(this, 0, intent, 0);

PendingIntent 于 Intent的区别:
Intent 表示一个目的,第一个参数表示所在类,第二个参数表示目标类。
PendingIntent 是 对Intent的包装,即Intent就是一个意图,直接执行
而PengdingIntent则也可不执行,可以传递给需要用到的程序上,比如Application,Notification等

希望能帮到你们噢!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值