【Android】通知(未完待续)

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

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

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

创建通知渠道

首先,需要一个NotificationManager 对通知进行管理。
可以通过调用ContextgetSystemService()方法获取。

val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

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

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对象。

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()方法用于设置通知的大图标,当下拉系统状态栏时,就可以看到设 置的大图标了。

manager.notify(1, notification)

调用NotificationManager 的notify()方法就可以让通知显示出来了。
notify()方法接收两个参数:
第一个参数是id,要保证为每个通知指定的id都是不同的;
第二个参数则是Notification对象,这里直接将我们刚刚创建好的Notification对象传入即可。

相关推荐

  1. Android通知待续

    2023-12-13 16:50:03       62 阅读
  2. C++ -- STL(待续

    2023-12-13 16:50:03       32 阅读
  3. LeetCode 刷题总结 【待续

    2023-12-13 16:50:03       64 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-13 16:50:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-13 16:50:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-13 16:50:03       82 阅读
  4. Python语言-面向对象

    2023-12-13 16:50:03       91 阅读

热门阅读

  1. PHP中什么是命名空间(Namespace)?

    2023-12-13 16:50:03       61 阅读
  2. 多个变量存储同一个地址

    2023-12-13 16:50:03       58 阅读
  3. 只需六个简单步骤即可开发自定义应用程序

    2023-12-13 16:50:03       41 阅读
  4. ADC芯片用途在哪些行业?

    2023-12-13 16:50:03       56 阅读
  5. LeeCode刷题

    2023-12-13 16:50:03       58 阅读
  6. VS Code使用 CMake 或 Makefile管理C++多文件编译

    2023-12-13 16:50:03       60 阅读
  7. C++中用以声明类的另一个关键字——struct

    2023-12-13 16:50:03       63 阅读
  8. digit函数

    2023-12-13 16:50:03       61 阅读