Android发送通知——通知栏(Notification)

通知是指 Android 在您应用的界面之外显示的消息,旨在向用户提供提醒、来自他人的通信信息或您应用中的其他实时信息。在发出一条通知后,手机最上方的状态栏会显示一个通知的图标,下拉状态栏后就可以看到通知的详细内容。用户可以点按通知来打开应用,或直接从通知中执行操作。

通知格式

  • 小图标:必须提供,通过 setSmallIcon() 进行设置。
  • 应用名称:由系统提供。
  • 时间戳:由系统提供,但您可以使用 setWhen() 替换它或者使用 setShowWhen(false) 隐藏它。
  • 大图标:可选内容(通常仅用于联系人照片,请勿将其用于应用图标),通过 setLargeIcon() 进行设置。
  • 标题:可选内容,通过 setContentTitle() 进行设置。
  • 文本:可选内容,通过 setContentText() 进行设置。

创建通知

  • 创建一个通知(必须设置channelId)
    使用Builder构造器来创建Notification对象
Context context=getApplicationContext();
String channelId = "测试渠道";
Notification notification = new Notification.Builder(context,channelId).setContentTitle("测试通知标题").setContentText("测试通知文本").setWhen(System.currentTimeMillis()).setSmallIcon(R.drawable.icon).setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.welcome1))   //设置大图标.build();

Notificationt.Builder常用设置:

设置属性 说明
setAutoCancel(boolean autocancel) 设置点击信息后自动清除通知
setContent(RemoteView view) 设置自定义通知
setContentTitle(String string) 设置标题
setContentText(String string) 设置内容
SetContentIntent(PendingIntent intent) 设置点击信息后的跳转(意图)
setWhen(long when) 设置时间
setSmallIcon() 设置小图标
setLargeIcon() 设置大图标
setPriority(int pri) 设置通知的重要程度
setStyle(Style style) 设置样式
setVisibility(int visibility) 设置锁屏显示
setDefault(int defaults) 设置默认
  • 获取系统的通知管理器
NotificationManager notificationManager = (NotificationManager)context.getSystemService(NOTIFICATION_SERVICE);
  • 创建NotificationChannel(这里传入的channelId要和创建的通知channelId一致,才能为指定通知建立通知渠道)
NotificationChannel channel = new NotificationChannel(channelId,"测试渠道名称", NotificationManager.IMPORTANCE_DEFAULT);
notificationManager.createNotificationChannel(channel);

通知渠道是指每条通知都要属于一个对应的渠道,每个APP可以自由地创建当前APP拥有哪些通知渠道,但是这些通知渠道的控制权都是掌握在用户手上的。用户可以自由地选择这些通知渠道的重要程度、是否响铃、是否震动或者是否关闭这个渠道的通知。
通知渠道的使用:Android O(8.0)Notification Channel使用姿势、NotificationChannel使用手册

  • 发送通知
notificationManager.notify(1123, notification);

通知样式

Android为开发者提供了不同种类的通知样式模板可以使用,开发者也可以根据自己需要自定义通知样式。
本来是打算自己看手册总结一下的,有个大神总结得很到位:Android 8.0中各种通知写法汇总。
以大图样式为例:

// 1. 创建一个通知(必须设置channelId)
Notification.BigPictureStyle bigPictureStyle = new Notification.BigPictureStyle().setBigContentTitle("Big picture style notification ~ Expand title").setSummaryText("Demo for big picture style notification ! ~ Expand summery").bigPicture(BitmapFactory.decodeResource(context.getResources(),R.drawable.welcome3));
Notification notification = new Notification.Builder(context,channelId).setContentTitle("测试通知标题").setContentText("测试通知文本").setWhen(System.currentTimeMillis()).setSmallIcon(R.drawable.icon).setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.welcome1))   //设置大图标.setStyle(bigPictureStyle).build();
// 2. 获取系统的通知管理器
NotificationManager notificationManager = (NotificationManager)context.getSystemService(NOTIFICATION_SERVICE);
// 3. 创建NotificationChannel(这里传入的channelId要和创建的通知channelId一致,才能为指定通知建立通知渠道)
NotificationChannel channel = new NotificationChannel(channelId,"测试渠道名称", NotificationManager.IMPORTANCE_DEFAULT);
notificationManager.createNotificationChannel(channel);
// 4. 发送通知
notificationManager.notify(1123, notification);

展开前:

展开后:

Android发送通知——通知栏(Notification)相关推荐

  1. Android开发之通知栏Notification详解

    Notification的用法  --- 状态栏通知  发送一个状态栏通知必须的两个类:            1. NotificationManager   --- 状态栏通知的管理类,负责发通知 ...

  2. Android之手机通知栏Notification的使用(二)

    先看效果图吧,可能有点小缺陷 怎么取消通知都取消不了,有哪位大神可以给我解释一下啊 MainActivity: package com.example.notificationapp;import a ...

  3. android 通知传值,Android消息通知(notification)和PendingIntent传值

    Android支持Toast和NotificationManager两种通知方式,前者相当于一个定时关闭的对话框,后者是在状态栏上显示一条消息.Toast和Notification都可以随时取消. T ...

  4. 【Android-】android 8.0 通知栏Notification适配、自定义铃声及其channel介绍

    android 8.0 通知栏Notification适配以及自定义铃声 一.8.0手机 通知栏适配 二.自定义铃声所遇到的坑 三.Android O Preview 之 通知渠道(Notificat ...

  5. Android — 在服务中发送通知Notification

    1.在服务中,发送通知的方法 private void sendNotification(String title,String content,StateBean stateBean){Contex ...

  6. android 音乐播放器的状态栏通知,Android仿虾米音乐播放器之通知栏notification解析...

    通知栏notification是Android中一个很重要的组件,可以在顶部状态栏中存在,用户也可以通过此来操作应用,在Android中只有3.0以上的版本才加入了notification的按钮点击功 ...

  7. Android 8.0+通知栏(Notification)适配详解,判断通知权限是否打开,并跳转至通知管理页面

    前不久因为API26(Android 8.0)以上的设备无法显示通知栏,所以网上查阅了比较多了资料,得出结论,API26以后引入了通知渠道这么个东西,然后就写了一篇问题对应的博文:Android 8. ...

  8. Android 通知栏Notification

    Android 通知栏Notification 在android的应用层中,涉及到很多应用框架,例如:Service框架,Activity管理机制,Broadcast机制,对话框框架,标题栏框架,状态 ...

  9. java发送通知栏样式_Android 通知栏Notification详解

    在android的应用层中,涉及到很多应用框架,例如:Service框架,Activity管理机制,Broadcast机制,对话框框架,标题栏框架,状态栏框架,通知机制,ActionBar框架等等. ...

最新文章

  1. IOSUIcontrol事件
  2. 无人驾驶运动学模型——线性时变模型预测控制的思路推演过程_百叶书的博客-CSDN博客_线性时变模型预测控制 转
  3. OpenCL异构并行计算编程笔记(1):平台、设备与上下文
  4. 关于一些知名深度学习模型的转换
  5. php psr-2,「PSR 规范」PSR-2 编码风格规范
  6. 通过百度 vs 奇虎,来谈博客搜索
  7. Palindromic Numbers LightOJ - 1205 数位dp 求回文数
  8. 自定义注解 实现自定义消息_实现自定义的未来
  9. 【渝粤题库】广东开放大学 商务交际听说 形成性考核
  10. 前端学习(627):数据类型
  11. zpf框架的business使用方法
  12. Spring之AOP面向切面编程
  13. Mac Pycharm导入Pygame教程(超细)
  14. 管理员登陆页面php,Dedecms管理员登录输入账号密码点击登陆又回到登陆界面
  15. 自考《数据库系统原理》(3)之关系模式设计理论
  16. 《正念领导力》承诺14:创造共赢
  17. (产品贴)手机常用软件之一—微信
  18. 苏嵌//张福辉//2018.7.11
  19. 自控力如何改善了我的生活
  20. php 获取农历,PHP通过新历获取农历日期的方法

热门文章

  1. 【数据库】SQL Server学习之路(一)
  2. Linux中xmind8 pro 破解(内附序列号,亲测有效)
  3. SuperMap GIS三维插件使用QA
  4. NLP判断语言情绪_挽回怎么用NLP神经语言程序学(一)
  5. Windows优化大师 V7.74 Build 7.702 (2007-07-02)
  6. latex中文模板_LaTeX论文排版初级教程 :论文的结构和tex源文件的结构
  7. 公司考勤系统需求分析报告
  8. ZZULIOJ.1114: 逆序
  9. c语言有趣的图形,数图形
  10. [Gradle系列]Gradle打包apk多版本,多渠道,多环境,多功能,多模块随心所欲