概括:

Android使用notification实现消息提醒,提供通知栏和通知抽屉查看通知和通知详情,Android的notification机制应用非常广泛,是指在应用程序之外显示的消息,布局由系统模板决定,开发者只需要定义模板中各部分的内容,通知详情就会在点开后展开视图显示设置的内容。

目前大体分为状态栏图标通知、悬挂提醒式通知、锁屏通知及圆点通知,从Android8.0开始必须为所有通知分配一个或多个通道,否则通知将不会显示。Android8.0及以上通过通道的importance属性设置重要性,Android8.0以下通过调用setPriority()方法进行设置。

实现:

官方推荐使用notification的内部构造器类Builder创建notification对象,notification类封装了通知的标题、内容、时间、小图标等信息。

基本步骤:1.使用getSystemService()获取NotificationManager管理类。

2.使用notification类创建通知对象,设置标题、内容、图片等样式。

3.调用NotificationManager的notify()调出通知栏,显示通知。

4.Android8.0及以上版本,需要创建通知通道对通知进行管理。

常用的方法:

       setSmallIcon(long)——设置通知小图标,必选

setContentTitle(String)——设置通知标题,可选

setContentText(String)——设置通知内容,可选

setWhen(long)——设置通知时间,默认系统时间

setSound(Uri)——设置自定义音乐

setLargeIcon(Bitmao)——设置通知栏下拉后的大图标

setContentIntent(PendingIntent)——设置单击通知后跳转的Activity,延迟Intent实现

setAutoCancel(boolean)——设置单击通知后是否消失,TRUE为消失

setStyle(notification.Style)——设置通知的样式

setPriority(int)——设置通知优先级,Android8.0以下使用

setDefault(int)——设置通知的LED灯、音乐、震动等默认设置

高优先级的悬浮通知:

通知发出后会悬浮在状态栏,引起用户的注意,单击才会消失。Android8.0及以上不仅需要通过创建通知通道时设置importance为IMPORTANCE_HIGH实现,还要调用setFullScreenIntent(PendingIntent)实现悬浮样式;Android8.0以下版本则通过调用setPriority(NotificationCompat.PRIORITY_HIGH)实现。

展开式通知:

通过下滑手势将通知展开,直接获取通知的更多信息,Android8.0及以上提供了多种可展开的通知样式,通过调用setStyle()方法进行设置。

自定义布局的通知:

当系统提供的模板不能满足时可使用自定义布局,将自定义布局扩充为RemoteViews的实例,在构建通知时调用setCustomContentView()设置自定义布局。

添加操作按钮:

除了展示通知信息外,还可以添加之多三个操作按钮,方便用户快速响应,如暂停提醒、回复短信等,但是不应该重复用户用户在点按通知时执行的操作。添加操作按钮需要构建一个PendingIntent和Notification.Action对象,构建通知时调用addAction()方法进行设置,PendingIntent一般用于完成各种任务,如启动后台任务的广播,以便在不干扰当前正在运行的前提下实现快速响应。

通知可见等级设置:

可以通过调用setVisibility()设置在锁定屏幕上的可见等级:

VISIBILITY_PUBLIC:显示通知的完整内容。

VISIBILITY_SECRET:不在锁定屏幕上显示通知的任何部分。

VISIBILITY_PERIVATE:显示通知的基本信息,如图标、标题

更新通知:

只需再次调用NotificationManagerCompat.notify(),将通知的id传递给该方法即可,如果发出的通知已被关闭,则系统会创建新的通知。此外黑可以通过调用setOnlyAlertOnce()方法只设置提醒一次,通知只会在首次出现时通过声音、震动等提醒用户,之后不会再提醒。

移除通知:

通过调用NotificationManager的cancel()或cancelAll()方法移除通知,cancel()用于移除指定id的通知,cancelAll()用于移除所有发出的通知。创建通知时通过setAutoCancel(true)也可以在用户点击通知后移除。

PendingIntent:

即用于延迟的Intent,可以看做是对Intent的封装,通过PendingIntent在将来某个不确定的时刻发生并启动Activity了解更多信息。需要注意的是禁止使用空Intent和隐式Intent,防止被恶意用户劫持修改内容。

PendingIntent实例对象可以调用PendingIntent的getActivity()、getBroadcast()和getService()等方法获取,对应Activity、Broadcast、Service三个组件的应用,共有4个相同的参数:Context、requestCode、Intent、flags,分别对应上下文对象、请求码、请求意图和关键标志位。

Android的notification通知相关推荐

  1. android之Notification通知

    我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的. pac ...

  2. Android Train—notification通知

    Notification extends Object implements Parcelable java.lang.Object ↳ android.app.Notification Public ...

  3. Android中notification通知的Demo——震动,铃声,Led灯闪烁

    这里要注意几点: 1. notification的各种方法及参数的应用 2. 旧版本的SDK和新版本的SDK消息推送的写法是有些不一样的   1. notification的各种方法及参数的应用  ( ...

  4. 四十一、Android Notification通知详解

    根据activity的生命周期,在activity不显示时,会执行onStop函数(比如按下home键),所以你在onStop函数(按退出键除外)里面把notification放在通知栏里,再此显示时 ...

  5. Android Notification通知详解

    Android Notification通知详解 Notification: (一).简介: 显示在手机状态栏的通知.Notification所代表的是一种具有全局效果的通知,程序一般通过Notifi ...

  6. Android篇 --Notification(消息通知)

    Android篇 --Notification(消息通知) 消息通知(Notification)是Android系统中比较有特色的一个功能,当某个应用程序希望用户发出一些提示信息,而该应用又不在前台运 ...

  7. Android Notification通知详细解释

    Android Notification通知具体解释 Notification: (一).简单介绍: 显示在手机状态栏的通知. Notification所代表的是一种具有全局效果的通知,程序一般通过N ...

  8. Android学习|控件——Notification通知

    Android学习|控件--Notification通知 一.前提 二.两个对象的的构建 1.创建NotificationManager 2.使用Builder构造器来创建Notification 2 ...

  9. Android学习日记 Notification 通知

    Android学习日记 Notification 通知 文章目录 Android学习日记 Notification 通知 前言 使用步骤 总结 前言 下拉状态栏显示的通知功能 使用步骤 代码如下: p ...

最新文章

  1. 针对 Windows Phone 7 上的独立存储的 Sterling
  2. 禁用Chrome缓存进行网站开发
  3. ide硬盘接口图 sata硬盘接口图 SCSI硬盘接口图
  4. 面向对象的三大特征继承,封装和多态性
  5. Java:使用Executors创建和管理线程
  6. dojo还有人用吗_我的Dojo中有一个Mojo(如何编写Maven插件)
  7. c/c++ 编程试题
  8. python有关迭代器和生成器的面试题_python面试题之生成器迭代器
  9. iOS-从三维立方体到理解CATransform3DCGAffineTransformm34
  10. 【机器学习案例】酒店用机器学习,预测哪些客人会放鸽子
  11. 5.Docker技术入门与实战 --- 访问 Docker 仓库
  12. Aspose.Excel模板输出中名称管理器的使用
  13. 类的加载过程详解之过程四:类的Using使用
  14. html过滤检索类似excel,利用jQuery实现仿Excel表格排序筛选代码
  15. Java基础知识笔记
  16. 门窗计算机公式,窗户的计算公式是什么
  17. 状态机的编写(使用C++)
  18. bnu1061 古墓丽影 C语言版
  19. ical4j 实现ICS文件的生成和解析
  20. 解除网页无法选择文字_无法复制

热门文章

  1. Linux配置及指令
  2. 机器学习在脊柱的应用现状:从临床的观点
  3. Unity 骨骼动画
  4. JAVA 北京大学GPA计算转换
  5. 两点三次埃尔米特插值
  6. 项目集锦 | 易基因DNA羟甲基化5hmC测序研究成果
  7. 记一次bash脚本报错原因
  8. (十)Scratch制作《贪吃蛇》,超详细
  9. 如何把一个PDF文档拆分为多个文档
  10. 大数据之Hadoop3.x 运行环境搭建(手把手搭建集群)