Android 通知

这篇具有很好参考价值的文章主要介绍了Android 通知。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

通知

通知是指 Android 在应用界面之外显示的消息,旨在向用户提供提醒、来自他人的通信或应用中的其他实时信息。用户可以点按通知以打开您的应用,或直接从通知中执行操作。
通知在状态栏中显示为图标,在抽屉式通知栏中显示更详细的条目,并在应用图标上显示一个标志。通知还会显示在配对的穿戴式设备上。
Android 通知,应用软件,android

基本用法

需要在清单文件中配置通知权限

<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

1. 创建通知渠道

从 Android 8.0(API 级别 26)开始,所有通知都必须分配到一个渠道。

	// 获取 NotificationManager 对象来管理通知
	NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
	
	if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
			NotificationChannel channel = new NotificationChannel(CHANNEL_ID,
                    "meMusic message", NotificationManager.IMPORTANCE_HIGH);
            manager.createNotificationChannel(channel);  //注册通知渠道
	}

public NotificationChannel(String id, CharSequence name, @Importance int importance)
需要创建一个NotificationChannel对象,第一个id是唯一渠道 ID,第二个name是用户可见名称,可以自定义,第三个importance是通知重要程度,它是NotificationManager 中定义的常量属性值,主要有以下五个:

  • IMPORTANCE_NONE 无。关闭通知
  • IMPORTANCE_MIN 小。开启通知,不会弹出,没有提示音,状态栏中不显示
  • IMPORTANCE_LOW 低。开启通知,不会弹出,没有提示音,但状态栏中显示
  • IMPORTANCE_DEFAULT 默认。开启通知,不会弹出,但有提示音,状态栏中显示
  • IMPORTANCE_HIGH 高。开启通知,会弹出,发出提示音,状态栏中显示

2. 创建通知

创建通知时需要用到NotificationManager 和 NotificationCompat 两个类。NotificationManager是状态栏通知的管理类,负责发通知,清除通知等操作。NotificationCompat可以兼容不同版本的 Notification。

        // 1.获取 NotificationManager 对象来管理通知
        NotificationManager manager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        // 2.通过NotificationCompat对象的构造器类来设置通知栏的属性
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNAL_ID)
                .setContentTitle("这是通知标题")
                .setContentText("这是通知内容")
                .setWhen(System.currentTimeMillis())
                .setSmallIcon(R.mipmap.ic_launcher)
                .setPriority(NotificationCompat.PRIORITY_MAX)
                .setLargeIcon(BitmapFactory.decodeResource(this.getResources(), R.mipmap.ic_launcher));
        // 3.创建notification对象
        Notification notification = builder.build();
        // 4.发送/更新通知内容
        manager.notify(1888,notification); //1888为自定义通知唯一id

3. 更新通知

builder.setContentText("来新的消息了");
manager.notify(1888,notification);

4. 设置点击事件

设置通知的点击事件需要用PendingIntent的类,它和Intent一样,都能够执行某些动作,包括启动活动、服务,或发送广播等。 但它有和Intent也有些不同之处:Intent倾向于立即去执行某个动作,而PengdingIntent更倾向于在某个合适的时机去执行某个动作,即延迟执行Intent。
一般通过PendingIntent类的getActivity()、getBroadcast()或getService()其中一个方法获取实例。

//获取 PendingIntent 对象,意图是点击通知后打开应用主页面
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pi = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE);
...
// 通过NotificationCompat对象的构造器类来设置通知栏的属性
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
.setContentIntent(pi)   //设置通知点击事件
.setAutoCancel(true)    //通知被点击后自动消失

public static PendingIntent getService(Context context, int requestCode, @NonNull Intent intent, @Flags int flags)
getService参数: 第一个Context,第二个requestCode,第三个Intent目的意图,第四个flags:

  • FLAG_ONE_SHORT:该 PendingIntent 只作用一次。
  • FLAG_NO_CREATE:如果当前系统中不存在相同的 PendingIntent 对象,系统将不会创建该 PendingIntent 对象而是直接返回 null 。
  • FLAG_CANCEL_CURRENT:如果当前系统中已经存在一个相同的 PendingIntent 对象,那么就将先将已有的 PendingIntent 取消,然后重新生成一个 PendingIntent 对象。
  • FLAG_IMMUTABLE:创建的PendingIntent不可变,API23加入。
  • FLAG_UPDATE_CURRENT:如果系统中已存在该 PendingIntent 对象,那么系统将保留该 PendingIntent 对象,但是会使用新的 Intent 来更新之前 PendingIntent 中的 Intent 对象数据,例如更新 Intent 中的 Extras。
    具体参考:https://developer.android.google.cn/develop/ui/views/notifications/navigation?hl=zh-cn

如果您的应用正在运行前台服务(一种在后台运行且生命周期长且用户可察觉到的 Service,如媒体播放器),则需要发出通知。此通知不能像关闭其他通知一样关闭。如需移除通知,必须停止运行服务或从前台状态中移除服务。文章来源地址https://www.toymoban.com/news/detail-806634.html

到了这里,关于Android 通知的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 软件物料清单管理 | 打开“应用软件盲盒”,预警“开源组件风险”

      随着软件规模化发展和开源软件的兴起,越来越多的软件在开发过程中集成第三方组件或开源组件。虽然这极大地提高了开发效率,但也难以避免地引入了安全风险。 2021年底,知名的开源项目 Apache Log4j被暴存在严重的安全漏洞,影响范围巨大,被称之为 “核弹级” 漏洞

    2024年02月08日
    浏览(53)
  • 细数应用软件的缺陷分类

    本文分享自华为云社区《应用软件的缺陷分类》,作者:Uncle_Tom 。 软件缺陷分类在已知缺陷管理、缺陷用例库建设、静态检查工具的能力覆盖和横向对比中起着重要的作用。本文参考GB/T-30279, CNNVD,NVD,以及CWE的各种视图, 给出了一个建立适合自己的缺陷分类方法。 最近先后

    2024年02月13日
    浏览(38)
  • 小课堂:应用软件如何做安全方案

    一、导语 作为三大入侵途径之一的“应用软件”,被用于入侵的频率非常高。 我们常用的Apache、Nginx、Tomcat、MySQL、SQL Server、Serv-U等大部分服务器软件,都有安全隐患,需要做好安全防护措施。 下面我们以Apache为例,讲解如何防御入侵。Apache是一款非常优秀的Web服务器软件

    2024年02月16日
    浏览(46)
  • 易语言软件定制软件开发脚本开发协议软件电脑网站APP应用视频制作工程制作

    随着信息技术的不断发展,易语言软件定制开发已成为许多公司的一项重要业务。本文将探讨如何利用易语言承接软件定制软件开发脚本开发协议软件电脑网站APP应用视频制作工程制作。 一、易语言概述 易语言是一种简单易学的编程语言,它采用中文编程,让不会英文的初

    2024年02月08日
    浏览(81)
  • 软件测试/测试开发丨ChatGPT在软件测试领域的应用

    随着互联网技术的迅速发展,软件已经成为现代社会中不可或缺的一部分。而软件测试作为保障软件质量的关键环节,也越来越受到人们的关注。在这个领域,ChatGPT作为一种新型的人工智能技术,正逐渐应用于软件测试领域,为软件测试带来了诸多创新和改进。 在软件测试

    2024年02月14日
    浏览(63)
  • 苹果电脑菜单栏应用管理软件Bartender 4 mac软件特点

    Bartender mac是一款可以帮助用户更好地管理和组织菜单栏图标的 macOS 软件。它允许用户隐藏和重新排列菜单栏图标,从而减少混乱和杂乱。 Bartender mac软件特点 菜单栏图标隐藏:Bartender 允许用户隐藏菜单栏图标,只在需要时显示。这样可以减少菜单栏的拥挤和视觉干扰,使界

    2024年02月03日
    浏览(46)
  • 蚁剑软件的配置与应用

    蚁剑(antSword)是一款开源的网站管理软件,它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员,由于蚁剑(antSword)所有脚本的源代码均来自中国菜刀,流量特征和菜刀相差不大,因此提供了编码/解码器绕waf,使用nodejs编写,支持自定义:     编码

    2023年04月10日
    浏览(28)
  • VOSviewer软件的基础与应用

    VOSviewer是一款免费且专业的文献计量分析软件,也是一个知识图谱可视化工具,由荷兰莱顿大学开发,主要用于构建和查看文献计量知识图谱,基于文献的共引和共被引原理,具有可视化能力强、适合于大规模样本数据的特点,并支持标签视图、密度视图、聚类视图和分散视

    2024年02月09日
    浏览(38)
  • C# 软件Licence应用实例

    我们在使用一些需要购买版权的软件产品时,或者我们做的商业软件需要进行售卖,为了收取费用,一般需要一个软件使用许可证,然后输入这个许可到软件里就能够使用软件。简单的是一串序列码或者一个许可证文件,复杂的是一个定制化插件包。于是有的小伙伴就开始好

    2024年02月10日
    浏览(32)
  • 软件工程应用题汇总

    DFD/L0(基本系统模型) 只包含源点终点和一个处理(XXX系统) DFD/L1(功能级数据流图)在L0基础上进一步划分处理(XXX系统) 个人理解   DFD/L2(在L1基础上进一步分解后的数据流图) 变换流 以CD为变换中心          箭头尾部记得加圆圈(空心圆代表传递的数据,实心圆代表传递

    2024年01月18日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包