Android Notification总结

Android Notification总结

 

目录[-]

一、通知的主要功能
二、通知简介
三、通知的使用流程
四、使用NotificationCompat.Builder设置通知的属性:
五、管理通知

一、通知的主要功能

  1. 显示接收到短消息、即使消息等信息 (如QQ、微信、新浪、短信等),此类消息一般有多条时会采用摘要的形式显示,展开则显示通知详情;

  2. 显示客户端的推送消息(如新版本发布,广告,推荐新闻等)

  3. 显示正在进行的事物,一般在通知中显示进度条,显示后台程序运行进度(如音乐播放器、新版本下载进度等)

二、通知简介

  1. 基本布局:

    1. 普通视图的通知

    2. BigView视图的通知(此类通知需要通过setStyle属性设置,摘要区可以添加自定义的操作)

  2. 相关类:使用通知的时候主要涉及两个类:Notification 和 NotificationManager(一般为了拓宽通知的适用范围,推荐使用支持库中的通知类NotificationCompat和NotificationCompat.Builder)

    1. Notification :通知类,该类中包含通知的各种属性和方法;一般通过NotificationCompat.Builder设置通知的各个属性值

    2. NotificationManager:状态栏通知管理类,该类负责应用中所有通知的发送、清除等管理操作;该类是一个系统服务,需要通过 (NotificationManager)getSystemService(NOTIFICATION_SERVICE)方法获得;

三、通知的使用流程

  1.  通过NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)获得一个通知的Builder对象;

  2. 调用mBuilder的方法设置通知属性,如setSmallIcon(int drawable)、satContentTitle(CharSquence title)等为通知设置小图标、内容标题;

  3. 通过mBuilder.build()方法获得一个Notification对象;

  4. 获得一个通知管理器NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE),通过nm.notify(int id, Notification notification)方法发送通知,至此,通知便已经发送出去

四、使用NotificationCompat.Builder设置通知的属性:

RemoteViews remoteView = new RemoteViews(mContext.getPackageName(), R.layout.custom_notification);
Bitmap mBitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.ic_summary_notice);
Intent intent = new Intent(mContext, IconifyActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(mContext).setTicker("ticker")                //新来通知时在状态栏现实的文本.setContentTitle("content title")  //设置通知标题.setContentText("content text")        //设置通知文本.setSmallIcon(R.drawable.ic_notice_1)  //设置通知左上角小图标.setContentIntent(pendingIntent)    //设置点击通知的操作.setDeleteIntent(pendingIntent)        //设置删除通知时的操作.setWhen(System.currentTimeMillis()) //设置通知上的时间戳.setProgress(0, 0, true)   //设置进度条.setStyle(new NotificationCompat.BigTextStyle())   //设置通知样式,主要包括默认样式、BigTextStyle、BigPictureStyle和InboxStyle.setContent(remoteView)                //设置通知使用自定义的视图,而非系统默认视图.setLargeIcon(mBitmap)          //设置通知大图标.setAutoCancel(true)                //设置用户点击通知后是否自动清除通知,true:清除;false:不清.setNumber(count)                    //设置通知右下角显示的数字.setDefaults(NotificationCompat.DEFAULT_ALL)    //设置应用于通知上的默认动作,如声音、三色灯、振动等.setLights(0x0000ff, 300, 300)//设置通知三色灯.setVibrate(new long[]{0, 300, 500, 700})    //自定义振动.setSound(Uri.parse("file:///sdcard/xx/xx.mp3"))    //自定义通知提示音.setOngoing(false)                    //设置是否为一个后台任务,默认为否;true表示是一个正在进行的后台任务,如音乐播放、文件下载、数据同步等.setPriority(NotificationCompat.PRIORITY_DEFAULT)    //设置该通知相对重要性.setColor(0x00ff00)                    //设置通知颜色.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)   //设置通知的可见性,取值为VISIBILITY_PRIVATE(默认)、VISIBILITY_PUBLIC、VISIBILITY_SECRET中的一种.setContentInfo("content info")        //设置通知右侧的大文本内容.setFullScreenIntent(pendingIntent, false)    //设置一个直接全屏加载的动作,而不是发送通知至通知栏.setExtras(new Bundle())            //设置通知的元信息.setCategory(NotificationCompat.CATEGORY_MESSAGE)    //设置通知所属类别.setGroup(NotificationCompat.CATEGORY_CALL)    //设置该通知为分享同一通知键值的通知组中的一部分.setGroupSummary(false)                //设置该通知为一个通知组中的摘要通知.setUsesChronometer(false)            //使用计时器而非时间戳来显示时间.setSubText("sub text")                //设置扩展视图中的子文本内容.setLocalOnly(false)                //设置该通知是否只在当前设备上显示,默认为否.setOnlyAlertOnce(false)            //设置是否只提示一次.setSortKey("sort key");                //设置针对一个包内的通知进行排序的键值

    下面对部分方法进行详细解释:

  1. setContentIntent(PendingIntent intent)和setDeleteIntent(PendingIntent intent):设置点击该通知或删除该通知时需要进行的操作,参数为一个PendingIntent ,由该PendingIntent 指定操作意图

  2. setProgress(int max, int progress, boolean indeterminate):设置通知中包含一个ProgressBar类型的进度条,注意:此方法在4.0及以后版本才有用,如果为早期版本:需要自定义通知布局,其中包含ProgressBar视图

  • max:进度条的最大值;

  • progress:当前已完成的进度值,一般来说,当操作完成时,progress应等于max,通常将max值设为100,然后将progress值设为当前完成值占max的百分比;

  • indeterminate:一个boolean类型值,表示当前的进度条是为indeterminate(true)还是determinate(false);

  • setDefaults(int defaults):设置应用于通知上的默认提示音、震动、灯光灯,取值只能为以下三种中的一种或多种的组合,当默认灯光、震动、提示音全采用时,可以使用Notification.DEFAULT_ALL

  • Notification.DEFAULT_VIBRATE:添加默认震动提醒  需要 VIBRATE permission

  • Notification.DEFAULT_SOUND:添加默认声音提醒

  • Notification.DEFAULT_LIGHTS:添加默认三色灯提醒

  • setLights(int argb, int onMs, int offMs):自定义通知提示的三色灯灯光颜色和闪烁频率,可用于区分不同的应用场合下的通知信息;只有设置了标志符Flags为Notification.FLAG_SHOW_LIGHTS的时候,才支持三色灯提醒,同时,并非所有的设备都支持所有的灯光颜色

  • argb:三色灯的颜色

  • onMs:三色灯亮时的持续时间(单位:毫秒)

  • offMs:三色灯暗时的持续时间(单位:毫秒)

  • setVibrate(long[] pattern):设置通知的振动模式,如setVibrate(new long[] {0,300,500,700})表示延迟0ms,振动300ms,然后延迟500ms,振动700ms,以此类推

  • setSound(Uri sound):设置通知的提示音,可以是自定义的提示音,也可以是默认提示音

  • setSound(Uri.parse("file:///sdcard/xx/xx.mp3")):设置提示音为自定义的铃声;

  • setSound(Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "5"))表示获取Android多媒体库中的铃声;

  • setPriority(int pri):设置通知的相对优先级,系统会根据不同优先级的通知采用不同的显示方式,从而影响用户在不同优先级的通知上所消耗的时间及被打扰程度,不过一般来说,系统安排通知时的优先级包含多个方面,setPriority只是影响其中的一个方面,具体情况因平台不同而稍有不同

  • pri:通知的相对优先级,一个整形值,取值范围为-2(最低优先级)到2(最高优先级)

  • 下表列出了不同优先级所对应的常量及所呈现的效果和用途

优先级 
PRIORITY_MAX(2)最高优先级,重要而紧急的通知,通知用户这个事件是时间上紧迫的或者需要立即处理的
PRIORITY_HIGH(1)高优先级,用于重要的通信内容,例如短消息或者聊天,这些都是对用户来说比较有兴趣的
PRIORITY_DEFAULT(0)默认优先级,用于没有特殊优先级分类的通知
PRIORITY_LOW(-1)低优先级,可以通知用户但又不是很紧急的事件
PRIORITY_MIN(-2)最低优先级,用于后台消息 (例如天气或者位置信息);最低优先级通知将只在状态栏显示图标,只有用户下拉通知抽屉才能看到内容

注意:如何选择合适的优先级?

        DEFAULT、HIGH 和 MAX 是中断优先级别,在活动过程中有中断用户的风险。 为了避免打扰应用的用户,中断优先级仅保留用于以下通知 :

  • 涉及另一个用户

  • 时间敏感

  • 可能会立即改变用户在现实世界中的行为

LOW 和 MIN优先级通知的条件包括:

  • 不涉及其他用户

  • 不属于时间敏感型

  • 包含用户可能感兴趣但可选择在空闲时浏览的内容

  • setVisibility(int visibility):设置通知在锁屏状态下所显示的信息详细程度,visibility的取值为以下三种之一

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

  • VISIBILITY_SECRET:锁屏状态下不显示此通知的任何部分

  • VISIBILITY_PRIVATE(默认):锁屏时显示通知图标和内容标题等基本信息,但是隐藏通知的完整内容,使用该值时,还可以提供其中隐藏了某些详细信息的替换版本的通知内容

  • setFullScreenIntent(PendingIntent intent, boolean highPriority):当设置该属性值时,所对应的通知将不会以通常所见的通知形式发送到用户的状态栏,而是会全屏显示参数intent对应的意图;这类通知一般是优先级非常高,需要用户进行即时处理的通知,如来电、闹钟等,注意:如若想在其他场景中使用该类型通知,一般需要为用户提供开关此类通知的功能,否则可能会因为过度打扰用户而引起用户不满;

  • setCategory(String category):设置通知所属的类别,category字符串必须为如下系统预定义的通知类别之一,该值主要用于系统排序和过滤

  • CATEGORY_CALL:来电(语音或视频)或相似的同步通信请求

  • CATEGORY_MESSAGE:传入的直接消息(短信、即时消息等)

  • CATEGORY_EMAIL:异步群发消息(电子邮件)

  • CATEGORY_EVENT:日历事件

  • CATEGORY_PROMO:促销或广告

  • CATEGORY_ALARM:闹铃或定时器

  • CATEGORY_PROGRESS:长时间运行的后台操作的进度

  • CATEGORY_SOCIAL:社交网络或共享更新

  • CATEGORY_ERROR:后台操作或身份验证状态中的错误

  • CATEGORY_TRANSPORT:媒体传输播放控制

  • CATEGORY_SYSTEM:系统或设备状态更新。保留给系统使用

  • CATEGORY_SERVICE:正在运行的后台服务的指示

  • CATEGORY_RECOMMENDATION:对于某个事件的特定、及时建议。例如,新闻应用可能会建议用户接下来可能想要阅读的新话题

  • CATEGORY_STATUS:有关设备或上下文状态的持续信息

五、管理通知

  1. 删除通知:除非发生以下情况之一,否则通知仍然可见:

  • 用户单独或通过使用“全部清除”清除了该通知(如果通知可以清除);

  • 用户点击通知,且在创建通知时调用了 setAutoCancel(true);

  • 针对特定的通知 ID 调用了 cancel(),此方法还会删除当前通知;

  • 调用了 cancelAll() 方法,该方法将删除之前发出的所有通知;

  • 浮动通知:对于 Android 5.0(API 级别 21),当设备处于活动状态时(即设备未锁定且其屏幕已打开),通知可以显示在小型浮动窗口中(也称为“浮动通知”)。 这些通知看上去类似于精简版的通知,只是浮动通知还显示操作按钮。 用户可以在不离开当前应用的情况下处理或清除浮动通知。可能触发浮动通知的情况有:

  • 用户的 Activity 处于全屏模式中;

  • 通知的优先级字段设置为 PRIORITY_MAX 或 PRIORITY_HIGH 且通知设置有声音或振动;

浮动通知的使用范例有:使用设备时来电,使用设备时闹铃,新的短信,电池电量过低

   

  • 注意事项:

  1. 虽然Android 支持在通知底部显示可选的操作,但在使用这一功能时需要注意对操作进行筛选,一般,通知中应只包含最重要且有意义的操作,适合在通知中使用的操作为:对正在显示的内容类型必要、常用且常见;让用户可以迅速完成任务;而那些语义含义模糊或跟通知的默认操作一样的操作则不适合添加在通知中

  2. 注意利用通知的排名和排序:

         通知属于新闻,因此基本以时间倒序显示,并且会特别考虑应用规定的通知优先级。 通知是锁定屏幕的关键部分,并且在设备显示屏每次亮起时突出显示。 锁定屏幕上的空间有限,因此确定哪些通知最为紧急或最密切相关非常重要。 由于这个原因,Android 在处理通知时使用了更为精密的排序算法,考虑到以下因素:

  • 时间戳以及应用规定的优先级;

  • 通知是否最近以声音或振动形式告知过用户;

  • 与使用 EXTRA_PEOPLE 的通知相关的任何人,尤其是加星标的联系人;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/286170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五、登录页倒计时制作《仿淘票票系统前后端完全制作(除支付外)》

一、登录功能的实现 首先打开在线编辑器进入我们的项目:https://editor.ivx.cn/ 上一节我们已经完成了基本页面的制作,在本节中,我们将会开始完成登录功能的实现。 实现登录功能需要增加一个用户组件: 这个用户组件是需要选择…

【MATLAB统计分析与应用100】案例001:matlab使用Importdata函数导入文本txt数据

配套实验数据包下载:链接:https://pan.baidu.com/s/1T4zUFmCIOCKIisdGRQPddg?pwdddi1 文章目录1. 调用importdata函数读取文件中的数据2. 调用importdata函数读取文件数据,返回结构体变量x3. 调用importdata函数读取文件中的数据&#xff0c…

MAUI 入门教程系列(3.多目标平台)

前言如果您是第一次创建MAUI项目, 并且在之前也并没有接触过Xamarin.Forms应用, 或许你并不知道MAUI的强大优势, 在原来的Xamarin.Forms当中, 我们基于不同平台的项目他们是单独维护的。如下所示:因为如此, 你需要维护不同平台的项目。包括每个项目当中包含的资源、图像、属性定…

六、注册页功能制作《仿淘票票系统前后端完全制作(除支付外)》

一、注册块内容制作 首先打开在线编辑器进入我们的项目:https://editor.ivx.cn/ 上一节已经知道了如何制作登录块内容,但是咱们先做还没有注册,所以就测试不了登录块功能,现在咱们同样的,在注册块中添加一个变量和一…

【MATLAB统计分析与应用100例】案例002:matlab使用xlsread函数读取excel中的数据

文章目录 1. 读取文件excel表中单元格A2:H4中的数据2. 读取excel第1个工作表中单元格A2:C3中的数据,将数据分别加1后返回3. 读取excel第1个工作表中单元格A2:H2中的数据,将读取到的数据分别加1,返回数值矩阵num,文本矩阵txt,元胞数组raw,变换后数值矩阵X1. 读取文件excel…

美图秀秀首页界面按钮设计(二)

本文实现美图秀秀首页中的按钮,它包含3张图片和一个文本。通过开发按钮,我们可以学到iOS的自定义控件,绘制图片和文本的知识。【声明:本博客只能用作学习用途,不得用于商业用途,图片资源均来自官方&#xf…

第三方免费加固横向对比

前言 基于java开发的android应用由于其语言的特性,所以很容易被反编译,虽然android提供了proguard,但是也只是增加了源码阅读的难度,其中业务逻辑依旧可以分析得出。有些人通过各种破解手段将apk文件破解、反编译,然后…

(02).NET MAUI实战 布局

1.概要既然要做实战开发会建项目之后就需要认识布局控件了&#xff0c;本篇文章分享.NET MAUI中的一些基础常用的布局控件。GridStackLayoutFalyxLayoutAbsoluteLayout2.详细内容(1)Grid语法&#xff1a;<Grid RowDefinitions"50,50,50,50" RowSpacing"10&qu…

[Javascript] Avoid Creating floats if they are not needed

https://channel9.msdn.com/Series/Practical-Performance-Tips-to-Make-Your-HTMLJavaScript-Faster/06?WT.mc_id13400-DEV-sitepoint-article24 转载于:https://www.cnblogs.com/yoyohappy/p/5884629.html

七、后台入口及添加影院实现《仿淘票票系统前后端完全制作(除支付外)》

一、登录后台窗口显示与跳转 首先打开在线编辑器进入我们的项目&#xff1a;https://editor.ivx.cn/ 上一节已经完成了登录和注册功能&#xff0c;在这一节咱们将会实现对应的后台入口进入和一些后台功能的制作。 首先咱们需要记录一下登录的UID&#xff0c;因为咱们后台界面…

【MATLAB统计分析与应用100例】案例003:matlab调用smooth函数进行加噪数据的平滑处理

文章目录 1. 产生加噪正弦波信号,绘制加噪波形图2. 利用移动平均法对加噪信号进行平滑处理,绘制平滑波形图3. 利用lowess方法对加噪信号进行平滑处理,绘制平滑波形图4. 利用rlowess方法对加噪信号进行平滑处理,绘制平滑波形图5. 利用loess方法对加噪信号进行平滑处理,绘制…

八、影片添加页实现《仿淘票票系统前后端完全制作(除支付外)》

一、影片添加页 首先打开在线编辑器进入我们的项目&#xff1a;https://editor.ivx.cn/ 上一届影院添加页功能已经完成&#xff0c;这一节咱们实现影片添加页内容。 影片添加页如下&#xff1a; 该页面实现起来比较简单&#xff0c;点击图片后使用文件上传组件进行图片上传…

MAUI 通用权限框架(ABP)

简介众所周知, MAUI目前发布正式版本了, 那么对应, MAUI对应的ABP框架也应该马上出现, 这点也恰巧在我的预料之中, 所以在去年年底就开始着手Xamarin.Forms的ABP框架迭代。到目前为止,针对Xamarin.Forms 以及 WPF版本的 ABP框架已经在之前的文章当中给大家介绍过。那么本次主要…

《Matlab实用案例》系列Matlab从入门到精通实用100例案例教程目录(持续更新)

文章目录1. 专栏简介2. 专栏地址3. 专栏目录1. 专栏简介 2. 专栏地址 「 刘一哥与GIS的故事 」之《Matlab使用案例》 3. 专栏目录 【MATLAB统计分析与应用100例】案例001&#xff1a;matlab使用Importdata函数导入文本txt数据【MATLAB统计分析与应用100例】案例002&#xff…

Quartz2 定时器 《一》(概述)

为什么80%的码农都做不了架构师&#xff1f;>>> Quartz2 说白了&#xff0c;就是个功能比较完善的定时器&#xff0c;可以通过指定的时间执行指定的任务。 应用范围 a.比如让商城的活动&#xff08;对象&#xff09;在指定的时间&#xff08;定时&#xff0…

九、为影院添加影片《仿淘票票系统前后端完全制作(除支付外)》

一、数据获取 首先打开在线编辑器进入我们的项目&#xff1a;https://editor.ivx.cn/ 上一节已展示了影院页&#xff0c;但是你点击影院页进入后将看不到任何数据&#xff0c;这是因为当前影院还未有添加的影片&#xff0c;本节之后将会从页面开始完成这个功能。 首先我们应…

大话领域驱动设计——基础设施层

概述基础设施层是整个系统的⽀持层&#xff0c;通过对第三⽅类库的调⽤或系统的抽象和集成来实现对其他层的⽀持。与传统架构不同在DDD中&#xff0c;数据库访问的具体实现&#xff08;仓储&#xff09;也被放在了基础设施层。在DDD的理念中&#xff0c;基础设施层是为领域和用…

【MATLAB统计分析与应用100例】案例004:matlab调用smoothts函数对金融时间序列数据进行平滑处理

时间序列数据进行平滑处理效果预览: Excel原数据部分预览: 1. 读取金融时间序列数据,绘制波形图 x = xlsread(examp03_02.xls); % 从文件examp03_02.xls中读取数据 price = x(:,4)

【MATLAB统计分析与应用100例】案例005:matlab调用medfilt1函数对加噪正弦波信号进行平滑处理

平滑效果预览: 文章目录 1. 产生加噪正弦波信号,绘制加噪波形图2. 调用medfilt1对加噪正弦波信号y进行中值滤波,并绘制波形图1. 产生加噪正弦波信号,绘制加噪波形图 t = linspace(0,2*pi,500); % 产生一个从0到2

十、为影院添加影片及座位安排《仿淘票票系统前后端完全制作(除支付外)》

一、选中添加功能完成 首先打开在线编辑器进入我们的项目&#xff1a;https://editor.ivx.cn/ 在上一节咱们已经完成了对应的准备工作&#xff0c;在这一节中&#xff0c;咱们只需要对其进行调用即可&#xff0c;调用前还需要处理这些数据&#xff1a; 首先选中时&#xff0…