【Android】通知(未完待续)

Android 8.0 系统引入了通知渠道这个概念。

每条通知都要属于一个对应的渠道。

我们的应用程序如果想要发出通知,也必须创建自己的通知渠道才行。

创建通知渠道

首先,需要一个NotificationManager 对通知进行管理。

可以通过调用ContextgetSystemService()方法获取。

kt 复制代码
val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

接下来,要使用NotificationChannel类构建一个通知渠道:用NotificationManagercreateNotificationChannel()方法完成创建。

kt 复制代码
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
	val channel = NotificationChannel(channelId, channelName, importance)
	manager.createNotificationChannel(channel) 
}

由于NotificationChannel类和 createNotificationChannel() 方法都是Android 8.0 系统中新增的API,因此我们在使用 的时候还需要进行版本判断才可以。

创建一个通知渠道至少需要 渠道ID、渠道名称、重要等级 这 3 个参数。

  • 渠道ID:可以随便定义,只要保证全局唯一性就可以。

  • 渠道名称:是给用户看的,需要可以清楚地表达这个渠道的用途。

  • 通知的重要等级:主要有IMPORTANCE_HIGHIMPORTANCE_DEFAULTIMPORTANCE_LOWIMPORTANCE_MIN 这几种,对应的重要程度依次从高到低。不同的重要等级会决定通知的不同行为。当然这里只是初始状态下的重要等级,用户可以随时手动更改某个通知渠道的重要等级,开发者是无法干预的。

通知的使用方法

创建通知

首先,需要使用一个Builder 构造器来创建Notification对象。

kt 复制代码
val notification = NotificationCompat.Builder(context, channelId)
	.setContentTitle("This is content title")
	.setContentText("This is content text")
	.setSmallIcon(R.drawable.small_icon)
	.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.large_icon))
	.build()

NotificationCompat.Builder的构造函数中接收两个参数:

第一个参数是:context,这个没什么好说的;

第二个参数是:渠道ID,需要和我们在创建通知渠道时指定的渠道ID相匹配才行。

setContentTitle()方法用于指定通知的标题内容,下拉系统状态栏就可以看到这部分内容。

setContentText()方法用于指定通知的正文内容,同样下拉系统状态栏就可以看到这部分内容。

setSmallIcon()方法用于设置通知的小图标,注意,只能使用纯alpha 图层的图片进行设置,小图标会显示在系统状 态栏上。

setLargeIcon()方法用于设置通知的大图标,当下拉系统状态栏时,就可以看到设 置的大图标了。

kt 复制代码
manager.notify(1, notification)

调用NotificationManager 的notify()方法就可以让通知显示出来了。

notify()方法接收两个参数:

第一个参数是id,要保证为每个通知指定的id都是不同的;

第二个参数则是Notification对象,这里直接将我们刚刚创建好的Notification对象传入即可。

相关推荐
雨白3 小时前
Android 多线程:理解 Handler 与 Looper 机制
android
sweetying5 小时前
30了,人生按部就班
android·程序员
用户2018792831676 小时前
Binder驱动缓冲区的工作机制答疑
android
真夜6 小时前
关于rngh手势与Slider组件手势与事件冲突解决问题记录
android·javascript·app
用户2018792831676 小时前
浅析Binder通信的三种调用方式
android
用户096 小时前
深入了解 Android 16KB内存页面
android·kotlin
火车叼位7 小时前
Android Studio与命令行Gradle表现不一致问题分析
android
前行的小黑炭9 小时前
【Android】 Context使用不当,存在内存泄漏,语言不生效等等
android·kotlin·app
前行的小黑炭10 小时前
【Android】CoordinatorLayout详解;实现一个交互动画的效果(上滑隐藏,下滑出现);附例子
android·kotlin·app
用户2018792831671 天前
Android黑夜白天模式切换原理分析
android