Notification 是显示在手机状态栏的通知 ----- 手机状态栏位于手机屏幕的最上方,那里一般显示手机当前的网络状态、电池状态、时间等。Notification 所代表的是一种具有全局效果的通知,程序一般通过 NotificationManager 服务来发送 Notification。
Android 为 Notification 提供了 Notification.Builder 类,通过该类允许开发者更轻手的创建 Notification 对象。 Notification.Builder 提供了如下常用方法:
- setDefaults():设置通知 LED 灯、音乐、振动等;
- setAutoCancel():设置点击通知后,状态栏自动删除通知;
- setContentTitle():设置通知标题;
- setContentText():设置通知内容;
- setSmallIcon():为通知设置图标;
- setLargeIcon():为通知设置大图标;
- setTick():设置通知在状态栏的提示文本;
- setContentIntent():设置点击通知后将要启动的程序组件对应的 PendingIntent ;
Android 8 加入了通知 Channel 帮助用户来统一管理通知,开发者可以为不同类型的通知创建同一个通知 Channel ,而用户则可通过该 Channel 统一管理这些通知的行为 ------ 所有使用同一个 Channel 的通知都具有相同的行为。
通知 Channel 可统一管理通知的如下行为:
- 重要性;
- 声音;
- 闪光灯;
- 振动;
- 在锁屏上显示;
- 替换免打扰模式;
APP 第一次运行时可通过程序设置通知 Channel 的行为,但用户完全可以通过 Settings 来改变通知 Channel 的行为,甚至可以随时屏蔽通知 Channel 。一旦用户修改了该通知 Channel 的行为之后,程序将无法通过编程方式修改通知 Channel 的行为,这些设置完全有用户控制。
Android 9 再次改进了消息机制,它新增如下两个功能。
- 增强了通知参与者的支持。程序在创建 MessageStyle 时应使用 Person (支持名字、头像等)作为参数,不推荐使用普通的 CharSequence 作为参数,这样可为通知参与者设置更丰富的信息;
- 消息支持更丰富的数据。Message 对象可使用 setData() 方法设置更多样的通知数据(如图片),而不像以前仅支持文字通知。
发送 Notification 很简单,按如下步骤进行即可:
- 调用 getSystemService(NOTIFICATION_SERVICE) 方法获取系统的 NotificationManager 服务;
- 创建 NotificationChannel 对象,并在 NotificationManager 上创建该 Channel 对象;
- 通过构造器创建一个 Notification.Builder 对象;
- 为 Notification.Builder 设置通知的各种属性;
- 创建 MessageStyle 和 Message , 通过 Message 设置消息内容,为 Notification.Builder 设置 MessageStyle 后创建 Notification;
- 通过 NotificationManager 发送 Notification;