Notification、提醒式通知(横幅)踩坑与通知界面设置跳转
文章推薦指數: 80 %
Android基础知识(二十):Notification、提醒式通知(横幅)踩坑与通知界面设置跳转一、Notification通知与基本用法通知Notification是Android系统中 ...
Android基础知识(二十):Notification、提醒式通知(横幅)踩坑与通知界面设置跳转
快乐肥柴
于 2019-04-2616:26:38 发布
9542
收藏
20
分类专栏:
走进Anroid
文章标签:
Android通知
提醒式通知(横幅)踩坑
通知界面设置跳转
版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_38196407/article/details/89556023
版权
走进Anroid
专栏收录该内容
23篇文章
6订阅
订阅专栏
Android基础知识(二十):Notification、提醒式通知(横幅)踩坑与通知界面设置跳转
一、Notification通知与基本用法通知Notification是Android系统中比较有特色的一个功能,当某个应用程序希望用户发出一些提示消息,而该应用程序又不在前台运行时,就可以借助通知来实现。
首先上代码,如下为Notification的一个简单的例子,其中使用NotificationManager来管理通知。
通过设置通知的标题、通知内容、通知时间以及通知图标等内容,设置该应用程序的通知样式,并使用NotificationManager的notify方法显示通知,其第一个参数为通知的id,用于唯一标识该通知;第二个参数为notification。
关于Notification常用的设置setXX()方法及其说明如下所示。
其中的设置方法setContentIntent(PendingIntent)用于设置当点击通知之后,将要跳转的Activity,PendingIntent与Intent类似,但是前者更加倾向于在某个合适的时机去执行某个动作,而Intent则是倾向于立即执行某个动作。
对于PendingIntent的实例获取中,Android提供了几个静态方法getActivity()、getBroadcast()、以及getService()方法。
这几个方法的参数是一致的,第一个参数为Context,第二个参数一般用不到,通常传入0,第三个参数为Intent对象,通过该对象构建出PendingIntent的意图,第四个参数用于确定PendingIntent的行为,有4个值可选FLAG_ONE_SHOT:该PendingIntent只作用一次。
在该PendingIntent对象通过send()方法触发之后,将自动调用cancel进行销毁。
FLAG_NO_CREATE:如果AlarmManager管理的PendingIntent已经存在,那么将不进行任何操作,直接返回。
FLAG_CANCEL_CURRENT:如果AlarmManager管理的PendingIntent已经存在,那么将会取消当前的PendingIntent,从而创建一个新的PendingIntent。
FLAG_UPDATE_CURRENT:如果AlarmManager管理的PendingIntent已经存在,让新的Intent更新之前Intent对象数据。
二、Android8.0消息通知适配随着Android版本的更新,其对消息通知也做出了更改,如上的代码中可以看到当AndroidSDK的版本大于26时,原本的NotificationCompat.Builder(context)已经过时,并且在Android8.0中,这样使用的通知是无法显示的。
也就是说,在Android8.0系统以上的手机使用上述代码,通知完全无法显示。
从Android8.0系统开始,Google引入了通知渠道这个概念。
通知渠道是指每条通知都要属于一个对应的渠道,每个APP可以自由地创建当前APP拥有哪些通知渠道,但是这些通知渠道的控制权都是掌握在用户手上的。
用户可以自由地选择这些通知渠道的重要程度、是否响铃、是否震动或者是否关闭这个渠道的通知。
因此,Android8.0及其以上系统中,为了能够显示通知,需要做如下的通知适配。
对NotificationManager设置一个渠道,并设置该渠道的ID、Name、渠道重要程度以及设置是否震动等。
通知渠道类NotificationChannel的常用设置方法setXXX()如下表所示。
此外,一个APP可以设置多个渠道,即多个NotificationChannel,如下所示,在应用中设置两个通知渠道,分别命名为聊天通知消息,以及其他通知。
在手机中可以看到,该应用下的通知类别有聊天通知消息以及其他消息的通知渠道,用户可以通过不同的渠道对该应用的不同通知类型进行设置。
三、消息通知填坑——提醒式通知诸如微信,QQ等应用一样,当应用程序有新的通知时候,Android系统会有提醒式通知。
那么什么是提醒式通知呢?从Android5.0开始,通知可以短暂地显示在浮动窗口中,称之为提醒式通知。
提醒式通知会在应用发出通知后立即出现,稍后便会消失,但仍显示在抽屉式通知栏中。
可能会触发提醒式通知的条件有如下3种:用户的Activiity处于全屏模式(应用使用fullScreenIntent)通知的优先级很高,且在搭载Android7.1(API级别25)及更低版本的设备上使用铃声或震动。
在搭载Android8.0(API级别为26)及更高版本的设备上,通知渠道的重要程度比较高。
坑1:fullScreenIntent的使用经过实践,在小米手机中,设置用户的Activity处于全屏模式即使用fullScreenIntent方法,无论其第二个参数是否为true,其都会自动跳转到将要跳转的Activity,并且即使设置了setAutoCancel(true),由于该跳转不是点击通知发生的,所以通知并不会消失。
坑2:Android8.0通知渠道重要程度前面在做Android8.0通知适配中,设置了通知渠道的重要程度都为最高NotificationManager.IMPORTANCE_HIGH,但是依旧没有提醒式通知。
据郭霖大神解释,国产手机默认只给微信、QQ这类程序开横幅(即提醒式通知),其余应用需要手动去设置里面选择打开横幅才会有,而之所以这么做一方面是和国内开发公司的素质相关,由于国内许多开发公司的APP根本不区分通知重要还是不重要,都会拉到最高权限,这是对用户的一种伤害。
所以,在通知渠道设置了一大堆乱七八糟的东西,系统就丢给你一句:然并卵!!
四、通知设置界面跳转Android为开发者提供了管理读取通知渠道配置的权限,如果某个功能必须按照指定要求来配置通知渠道才能使用,那么可以提示用户手动更改通知渠道配置。
对于不同的Android版本,由于版本的不同其设置权限是不一样的,所以需要对APP所运行的客户端的Android版本进行判断,并根据不同的版本调用不同的代码进入到系统的通知设置界面。
第一张图Android8.1下通知渠道名为聊天通知消息的通知具体设置界面,而第二张图为Android5.0至7.0之间的通知设置界面。
参考资料:《第一行代码Android第2版》Android通知栏微技巧,8.0系统中通知栏的适配AndroidTotal/Android权限之通知、自启动跳转
快乐肥柴
关注
关注
5
点赞
踩
20
收藏
打赏
5
评论
Android基础知识(二十):Notification、提醒式通知(横幅)踩坑与通知界面设置跳转
Android基础知识(二十):Notification、提醒式通知(横幅)踩坑与通知界面设置跳转一、Notification通知与基本用法通知Notification是Android系统中比较有特色的一个功能,当某个应用程序希望用户发出一些提示消息,而该应用程序又不在前台运行时,就可以借助通知来实现。
首先上代码,如下为Notification的一个简单的例子,其中使用Notificatio...
复制链接
扫一扫
专栏目录
Android10.0SystemUI状态栏屏蔽弹出的提醒式通知
安卓兼职framework和app工程师的博客
05-20
464
在11.0SystemUI中有一种提醒式通知就是在状态栏弹出通知后停留几秒钟后消失这种通知就是提醒式通知,然后在下拉状态栏后可以看到这种通知
但是由于客户需求要求不要弹出这种通知所以就要求屏蔽掉接下来就来分析这种通知是如何弹出来的
通过查阅相关资料发现NotificationAlertingManager.java负责显示悬浮式提醒式的通知管理
路径:frameworks\base\packages\SystemUI\src\com\android\systemui\status
Android通知——Notification使用浅析(一)
zhewen的博客
05-17
573
1.序言
当某个应用程序希望想用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现。
发出一条通知,手机最上方的状态栏中会显示一个通知的图标,下拉状态栏后可以看到通知的详细内容。
通知栏和抽屉式通知栏均是由系统控制,用户可以随时查看。
通知的用法比较灵活,既可以在服务中创建,又可以在广播里创建。
通知的常见用途:
显示接收的短消息,及时消息等信息(如QQ,微信、新浪、短信等)
...
评论 5
您还未登录,请先
登录
后发表或查看评论
Android—提醒式通知的显示与限制
ListerCi的博客
02-24
573
提醒式通知也称为横幅通知或悬浮通知,适用于用户应该立即知晓的通知,它会短暂地悬浮在Window上,等到显示时间耗尽或者用户上划后消失,随后仍显示在通知抽屉中。
提醒式通知的应用非常广泛,QQ/微信的消息通知,支付宝的交易记录都会以提醒式通知的形式出现。
不过Android的官方文档上并没有明确表示该如何触发提醒式通知,而是给出了以下模糊的描述。
以下情况可能会触发提醒式通知:
1用户的Activity处于全屏模式(应用使用 fullScreenIntent)。
2通知的优先级很高,且在搭载
Android——横幅通知
小欣儿的专栏
06-25
2890
横幅通知,也称为提醒式通知,效果如下图:
这个效果在QQ,微信,钉钉等一些主流的App当中,大家一定很熟悉,今天就来说说如何实现。
可能会触发提醒式通知的条件有如下3种:
用户的Activiity处于全屏模式(应用使用fullScreenIntent)
通知的优先级很高,且在搭载Android7.1(API级别25)及更低版本的设备上使用铃声或震动。
在搭载Android8.0(API级别为26)及更高版本的设备上,通知渠道的重要程度比较高。
但是现实往往是残酷的,当你按照要求照做之后发现8.0以
极光推送点击通知弹出toast+不能被取消的通知
hunanqi的博客
08-31
1900
发送通知:
NotificationManagernotificationManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
Notification.Builderbuider=newNotification.Builder(MainActivity.this);
buider
Android通知Notification使用全解析,看这篇就够了
最新发布
yechaoa
06-26
2522
通知是Android在您的应用UI之外显示的消息,用于向用户提供提醒、来自其他人的通信或来自您的应用的其他及时信息。
用户可以点击通知打开您的应用或直接从通知中执行操作。
本文将带领实现各种常见的通知功能,以及各个Android版本需要做的。
发起一个普通通知的几个要素:重要通知,优先级设置最高,会直接显示在屏幕内(前台),而不是只有通知抽屉里,所以一定要设置,不要引起用户的负面情绪。
这里有几个新增的配置:可以通过在通知上添加一个自定义操作,如上图:去看看。
可以通过打开一个Activity,也可以是
AndroidNotifications
qq_41095045的博客
01-10
1705
AndroidNotifications简介
AndroidNotifications,顾名思义就是通知,在谷歌开发文档中是这样描述的:“Notificationsareglanceable,time-sensitiveinformationandactionssenttotheuser.”即:通知是发送给用户的可浏览、时间敏感的信息和操作。
1.简单使用
...
Android开发学习笔记:Notification和NotificationManager浅析
weixin_33889245的博客
09-04
44
Notification和NotificationManager操作相对比较简单,一般获取系统级的服务NotificationManager,然后实例化Notification,设置它的属性,通过NotificationManager发出通知就可以了。
基本步骤如下:
1.获取NotificationManager
Stringservice=Context...
NotificationManager和Notification区别
unbroken
05-17
662
原址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
3
android后台通知,Android后台定时提醒功能实现
weixin_34859739的博客
05-25
602
前提:考虑到自己每次在敲代码或者打游戏的时候总是会不注意时间,一不留神就对着电脑连续3个小时以上,对眼睛的伤害还是挺大的,重度近视了可是会遗传给将来的孩子的呀,可能老婆都跟别人跑了。
于是,为了保护眼睛,便做了个如下的应用:打开后效果:时间到之后有后台提醒:好了,接下来说一下做这样一个APP主要涉及到的知识点:Service:使用service,便可以在程序即使后台运行的时候,也能够做出相应的提醒,...
Notification通知使用方法详解
程序员Android
11-06
712
通知是应用向用户显示的消息提示,当发送通知时,通知将先以图标的形式显示在通知区域中。
用户可以打开下拉通知栏查看通知的详细信息。
通知区域和下拉通知栏均是由系统控制的区域,...
Android快速实现通知栏提醒功能
情怀中的释然~
09-26
3513
Android快速实现通知栏提醒功能日常的安卓开发过程中,经常会使用到通知栏去进行通知的功能,如何简单快速的将通知栏提醒功能集成到自己的项目之中,这篇文章将通过简短的代码展示,现在官方推荐的是这种使用builder的方式去创建通知栏的提示信息,之前的通过setbuilder=newNotification.Builder(this);
builder.setSmallIcon(
Android代码删除通知,如何使通知无法删除/不可删除
weixin_33268861的博客
05-26
565
即使用户点击它或点击全部清除,我也想让我的Android通知停留…现在它有时停留,并且有时被删除,我不确定是什么导致它。
这是我的通知代码:@TargetApi(Build.VERSION_CODES.JELLY_BEAN)publicstaticvoidcreateNotification(){NotificationManagernotificationManager=(Not...
8-1、Android通知
weixin_43345628的博客
04-29
1132
一、使用通知
1、创建通知渠道
1-1、什么是通知渠道
每条通知都要属于一个对应通知渠道
每个应用都可以创建自己的通知渠道,但控制权在用户手上
用户可以自由选择通知渠道的重要程度,以及关闭通知渠道
...
android横幅弹出权限,有关androidstudionotification横幅弹出的功能没有反应
weixin_30386973的博客
06-07
361
小妹在这里已经卡了2-3天了,研究了很多人的文章,除了低版本api17有成功外,其他的不是channelnull就是没反应(channelnull已解决)拜托各位大大,帮小妹一下,以下是我的程式跟gradle,我在这里卡好久又没有人可问(哭)![image](/img/bVcL0Qo)publicclassMainActivityextendsAppCompatActivit...
Android8.0通知栏不显示、无横幅通知问题解决
热门推荐
Mr_Leixiansheng的博客
12-10
1万+
不知不觉安卓都快9.0了(更新的可够快的),随着它的更新会出现许多新的问题和新的知识,所以我们要不停地学习以及“更新自己”
追加2019-07-18无横幅通知解决:最近发现大家反馈直接使用代码只能实现图二效果。
然后楼主查阅了很多资料,然而都无法很好解决问题。
之后研究了一番(诺基亚、华为、小米)小米和华为不能弹出,猜测原因可能是系统版本过高或厂家自定义了系统。
因为IM接入时,消息通知问题也接入小...
AndroidONotification横幅通知(HangUpNotification)
weixin_37627774的博客
12-08
1559
文章目录1.参考目录
1.参考目录
此处只列出自己感觉有用的博客,供大家参考。
赠人玫瑰,手有余香。
1.https://blog.csdn.net/csdn_lwp/article/details/54576071
2.https://blog.csdn.net/weixin_38196407/article/details/89556023(权限设置)
3.
...
使用Notification在状态栏中显示一个通知。
antimage08的博客
11-27
2009
使用Notification在状态栏中显示一个通知。
Android9.010.0SystemUI状态栏下拉和通知栏始终居中
安卓兼职framework和app工程师的博客
12-16
1103
在10.0的系统产品中,在下拉SystemUI状态栏下拉和通知栏,默认是根据手势的x坐标的位置居中显示,但是如果太靠两边感觉不太好,下拉太靠边不太好看,所以产品提出不管手势在哪里下滑都要去下拉和通知栏居中显示会比较好看些下面就来实现这个需求。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022CSDN
皮肤主题:技术黑板
设计师:CSDN官方博客
返回首页
快乐肥柴
CSDN认证博客专家
CSDN认证企业博客
码龄6年
暂无认证
108
原创
2万+
周排名
4万+
总排名
7万+
访问
等级
1710
积分
63
粉丝
51
获赞
31
评论
204
收藏
私信
关注
热门文章
Android基础知识(二十):Notification、提醒式通知(横幅)踩坑与通知界面设置跳转
9542
RxPermissions——权限申请库
5633
关于R.java和ButterKinfe独特的R2.java的那些事
4193
Android基础知识(十九):Fragment的使用及其addToBackStack()方法
3993
一切从Android的Handler讲起(五):延迟消息实现原理与消息机制的基本原理
2741
分类专栏
一切从Android的Handler讲起
8篇
走进Anroid
23篇
Android进阶
31篇
Android杂谈
15篇
Java
8篇
Rx家族
4篇
计算机网络
11篇
最新评论
关于AndroidHandler同步屏障那些事
s315250401:
你这是在其他地方原封不动copy别人的过来的吧
一切从Android的Handler讲起(五):延迟消息实现原理与消息机制的基本原理
s315250401:
若当前时间小于Message执行时间,即now
延伸文章資訊
- 1Android通知——Notification使用淺析(一) - 台部落
提醒式通知從Android 5.0 開始,通知可以短暫地顯示在浮動窗口中,稱之爲提醒式通知。這種行爲通常適用於用戶應立即知曉的重要通知,而且僅在設備未 ...
- 2Android—提醒式通知的显示与限制 - 简书
提醒式通知也称为横幅通知或悬浮通知,适用于用户应该立即知晓的通知,它会短暂地悬浮在Window上,等到显示时间耗尽或者用户上划后消失,随后仍显示在 ...
- 3透過通知接收快訊- Android - Google Chrome說明
你可以透過Chrome 的通知設定,選擇是否要接收來自網站、應用程式和擴充功能的通知(例如會議提醒)。 如果畫面上出現彈出式視窗或廣告,你可以透.
- 4控管Android 裝置上的通知
您可以依據自己想接收的通知類型,針對手機上的個別或所有應用程式變更相關設定。如要查看通知,只要從螢幕頂端向下滑動即可。此外,部分通知.
- 5Android Notification 状态栏通知 - 简单教程
设置相关的一些方法 ; setDefaults(int) · 属性, 说明. Notification.DEFAULT_VIBRATE, 添加默认震动提醒 ; setContentIntent(...