
正文
android通知,android通知栏权限
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Android通知栏详解
可以看到,Android通知栏默认是标题显示一行,内容显示一行,对于一行显示不完的,用省略号代替。
这是常见的通知栏的样式,不再赘述。
在不同的手机上,只设置builder.setSmallIcon(R.drawable.ic_launcher)表现可能不一致,在华为P9上不会显示大的icon,只会显示小的icon。但是在魅族上却显示了,显示的应该是应用的默认图标。
所以建议还是设置
与上面的显示多行文本类似,也是在Android4.1中官方推出的Notification.BigPictureStyle。
使用方式也相同
是因为在用户还没有划出通知栏的时候需要提醒用户收到通知,所以需要显示smallIcon。
相关问答
Q1: android前台服务以及通知
前台服务是那些被认为用户知道(用户认可所认可)且在系统内存不足的时候 不允许系统杀死 的服务。前台服务 必须给状态栏提供一个通知 ,它被放到正在运行(Ongoing)标题之下——这就意味着 通知只有在这个服务被终止或从前台主动移除通知后才能被解除。
Notification支持文字内容显示、震动、三色灯、铃声等多种提示形式,在默认情况下,Notification仅显示消息标题、消息内容、送达时间这3项内容。
Notification:通知信息类,它里面对应了通知栏的各个属性。
NotificationManager : 状态栏通知的管理类,负责发通知、清除通知等操作。
构建通知的步骤:
更新通知
要想更新通知,需要利用 NotificationManager.notify()
的id参数,该id在应用内需要唯一。要想更新特定id的通知,只需要创建新的Notification,并发出与之前所用 id 相同的 Notification。 如果之前的通知仍然可见,则系统会根据新的 Notification 对象的内容更新该通知。相反,如果之前的通知已被清除,系统则会创建一个新通知。
删除通知
删除通知可以有多种方式:
1.通过 NotificationCompat.Builder 设置 setAutoCancel(true) ,这样当用户点击通知后,通知自动删除。
2.通过 NotificationManager.cancel(id) 方法,删除指定 id 的通知
3.通过 NotificationManager.cancelAll() 方法,删除该应用的所有通知
关于前台服务和通知更具体的内容可参考 紫豪
Q2: Android通知笔记
当我们自定义通知布局的时候,需要通过 NotificationCompat.Builder 设置自定义的 RemoteViews 。而 RemoteViews 中只支持部分布局和控件。如下所示。
布局
控件
注意:上面的信息我是在android-29的 RemoteViews 源码中看到的,其他版本的像
android-26,android-27都没看到,感觉很奇怪。
在上面说通过 NotificationCompat.Builder 设置自定义的 RemoteViews 。有两个方法。
设置通知收起状态RemoteViews
设置通知展开状态的RemoteViews
下面看一下网易云和喜马拉雅通知布局的对比。
通知栏网易云展开布局,喜马拉雅收起布局
通知栏网易云展开布局,喜马拉雅展开布局
通知栏喜马拉雅展开布局,网易云收起布局
通知栏喜马拉雅展开布局,网易云展开布局
在官方的 创建自定义通知布局 中有这么一段话。“ 自定义通知布局的可用高度取决于通知视图。 通常情况下 ,收起后的视图布局的高度上限为 64 dp,展开后的视图布局的高度上限为 256 dp ”。
对这段话我的理解是:
接下来我们测试一下,测试机器
收起布局效果
展开布局效果
收起布局效果
展开布局效果
到这里,有个疑问,如果收起布局大于64dp,展开布局大于256dp会是什么效果呢?接续测试一下。
收起布局效果
展开布局效果
在我的测试机上好像也没什么问题,就是我们的通知布局占据的高度变大了。
结论:可以自定义通知栏高度,但是无论是收起布局还是展开布局都不宜过大。过大的话,会导致用户在通知栏看到的通知数量减少,用户需要滑动才能看到更多的通知信息,影响用户体验。
源码请参考 NotificationDemo 的CustomizeNotificationActivity。
这个需要在手机中设置。
参考链接:







