Android学习|控件——Notification通知

本文详细介绍了如何在Android中创建并使用Notification,包括NotificationManager的获取、Builder构造器的应用、NotificationChannel的设置,以及如何实现点击通知后的跳转。文章还特别提到了Android 8.0以上的版本需要创建NotificationChannel,并提供了完整代码示例。
摘要由CSDN通过智能技术生成

一、前提

实现通知,要创建两个对象 ----- NotificationNotificationManager进行操作。

二、两个对象的的构建

1、创建NotificationManager

​       NotificationManager类是一个通知管理器类,这个对象是由系统维护的服务,是以单例模式的方式获得,所以一般并不直接实例化这个对象。

​       在Activity中,可以使用Activity.getSystemService(String)方法获取NotificationManager对象,Activity.getSystemService(String)方法可以通过Android系统级服务的句柄,返回对应的对象。

​       在这里需要返回NotificationManager,所以直接传递Context.NOTIFICATION SERVICE即可。

manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);


2、使用Builder构造器来创建Notification

      使用Notificationcompat类的Bulder构造器来创建Notification对象,可以保证程序在所有的版本上都能正常工作。

​       Android8.0新增了通知渠道这个概念,如果没有设置,则通知无法在Android8.0的机器上显示。

Notification notification = new NotificationCompat.Builder(this,“leo”).build();

请添加图片描述
       源码可以看出:NotificationCompat.Builder()构造器中包含两个参数,一个是Context通知,一个是channelId,而channelId是android8.0引入的NotificationChannel通知渠道。

​        所以这块需要进行版本判断,并创建NotificationChannel对象,同时NotificationChannel构造中的id要与Notification中的channelId保持一致,importance为通知类型,下面有介绍。

(下图为NotificationChannel构造函数)。请添加图片描述

2.1、NotificationChannel

​ 通知渠道:Android 8.0引入了通知渠道,其允许您为要显示的每种通知类型创建用户可自定义的渠道。
通知重要程度设置,NotificationManager类中

IMPORTANCE_NONE:关闭通知
IMPORTANCE_MIN:开启通知,不会弹出,但没有提示音,状态栏中无显示
IMPORTANCE_Low:开启通知,不会弹出,不发出提示音,状态栏中显示
IMPORTANCE_DEFAULT:开启通知,不会弹出,发出提示音,状态栏中显示
IMPORTANCE_HIGH:开启通知,会弹出,发出提示音,状态栏中显示

引用:NotificationManager.IMPORTANCE_HIGH

new NotificationChannel(“leo”, “测试通知”, NotificationManager.IMPORTANCE_HIGH);



3、创建两个对象完整代码

  manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

  //版本大于等于 安卓8.0
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
    
      
      NotificationChannel channel = 
          new NotificationChannel("leo", "测试通知", NotificationManager.IMPORTANCE_HIGH);
      
       manager.createNotificationChannel(channel);
 }

 Notification notification = new NotificationCompat.Builder(this,"leo").build();



4、Notifition常用方法

1、setContentitle(string string):设置标题
2、setContentText(String string):设置文本内容
3、setSmallion(int icon):设置小图标

4、setLargelcon(Bitmap icon):设置通知的大图标
5、setColor(int argb):设置小图标的颜色

6、setContentintent(Pendingintent intent):设置点击通知后的跳转意图

7、setAutoCancellboolean boolean):设置点击通知后自动清除通知
8、setWhen(long when):设置通知被创建的时间


以上方法使用需要在使用构造器、创建时候build()构造前设置

注意点
     Android从5.0系统开始,对于通知栏图标的设计进行了修改。
     现在Google要求,所有应用程序的通知栏图标,应该只使用alpha图层来进行绘制,而不应该包括RGB图层(总结:图片不能为rgb有色图)。

notification = new NotificationCompat.Builder(this,"leo")
                           .setContentTitle("重大消息!!!")    //设置标题
                           .setContentText("世界那么大,你想去看看嘛")    //设置通知文字
                            .setSmallIcon(R.drawable.ic_baseline_sms_24)   //设置左边的小图标
                            .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.img1))  //设置大图标
                            .setColor(Color.parseColor("#ffff0000"))
                             .setContentIntent(pendingIntent)  // 设置点击通知之后 进入相关页面(此处进入NotificationActivity类,执行oncreat方法打印日志)
                             .setAutoCancel(true)   //
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值