Android——通知的基本用法

使用通知

创建通知渠道

通知渠道即每条通知所对应的渠道,我们通过这个渠道可以控制是否通知、通知的重要性等等。
创建通知渠道
首先要获得一个NotificationManager的实例,用于对通知进行管理

val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

首先用getSystemService接收一系列字符串用于确定获取系统的哪一个服务。
然后使用类NotificationChannel创建通知渠道,接收三个参数,第一个是id,即渠道的id,保证全局唯一性,第二个是name,通知的名称,给用户看的,第三个是重要级别,有三种,分别是:
IMPORTANCE_HIGHIMPORTANCE_DEFAULTIMPORTANCE_LOW,优先级从高到低。
最后createNotificationChannel即可

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.O){  
    val channel  =NotificationChannel("normal","Normal",NotificationManager.IMPORTANCE_LOW)  
    manager.createNotificationChannel(channel)  
}

这里做了一个版本的判断。

发送通知

发送通知需要用到Builder来创建NotificationCompat对象,那么参数有context,渠道id(上面创建时定义的id)

binding.sendNotice.setOnClickListener {  
    val notification = NotificationCompat.Builder(this,"normal")  
        .setContentTitle("This is content title")  
        .setContentText("This is content text")  
        .setSmallIcon(R.drawable.small_icon)  
        .setLargeIcon(BitmapFactory.decodeResource(resources,R.drawable.large_icon))  
        .build()  
    manager.notify(1,notification)  
}

有四个set,第一个是设置title,第二关是设置内容,第三个是设置小图标,第四个是大图标,最后调用notify方法发送通知,参数有id,和notification对象(注:此处id不是渠道id,而是通知id,起编号作用)。

通知互动

如果完成以上事情,可以成功发送一条通知,但是你会发现点击后没有反应。
我们需要用到PendingIntent,相对于延迟执行的Intent
实际上在NotificationCompat可以直接设置

binding.sendNotice.setOnClickListener {  
    val intent = Intent(this,NotificationActivity::class.java)//add  
    val pi = PendingIntent.getActivity(this,0,intent,0)//add  
    val notification = NotificationCompat.Builder(this,"normal")  
        .setContentTitle("This is content title")  
        .setContentText("This is content text")  
        .setSmallIcon(R.drawable.small_icon)  
        .setLargeIcon(BitmapFactory.decodeResource(resources,R.drawable.large_icon))  
        .setContentIntent(pi)  //add
        .setAutoCancel(true)  //add
        .build()  
    manager.notify(1,notification)  
}

首先指定跳转的activity,然后用PendingIntent的静态方法中getAcitivity创建对象,接收四个参数,第一个是Context,第二个是requestCode,一般传入0即可,第三个即intent对象,第四个是flags,用于确定行为,一般填入0.
在最后还有一个setAutoCancel,这个是干什么用的,当设置为true时,点击通知后通知会自动消失。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值