Devoloper warning for package "com..." Failed to post notification on channel "null" see log for det

2023-11-06

使用通知时屏幕显示

在这里插入图片描述
这是因为我们使用的是Android O(Android 8.0)之前的通知写法,而Android O之后引入了通知通道(Notification channel)
重新定义通知内容中的应用程序类别,可以让开发者给予用户更精确的通知管理。用户可以阻止或分别更改每个通道的行为,而不是一起管理应用程序的所有通知。

因此我们之前的写法已经不适用Android O(Android 8.0)即以后的版本了


新版通知使用步骤

  1. 创建一个NotificationChannel(通知通道)对象
  2. 使用NotificationManager创建一个通道(通知通道对象为参数)
  3. 编写通知Notification,把通道id传入到第二个参数
  4. 调用NotificationManager的notify()方法发送通知
// 获取NotificationManager对象
NotificationManager manager = 
			(NotificationManager) getSystemService(NOTIFICATION_SERVICE);

            String id = "channel_1";
            String name = getString(R.string.app_name);
           
           // 创建NotificationChannel对象,传入id name 和 重要级别
            NotificationChannel notificationChannel =
                    new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH);

			// 创建通知的通道
            manager.createNotificationChannel(notificationChannel);

			// 创建通知
			// Builder中传入上下文对象和通道id
            Notification notification = new NotificationCompat
            		.Builder(this, id)
                    .setContentText("hello world")
                    .setContentTitle("This is a test")
                    .setWhen(System.currentTimeMillis())
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .build();
            // 发送通知
            manager.notify(1, notification);

至此我们已经完成了Android O(8.0)的通知写法了,运行程序发现我们成功的发送了一条通知。

下面介绍一个通知级别
PRIORITY_DEFAULT 默认的重要程度
PRIORITY_MIN 表示最低的重要程度,系统可能只会在特定的场景才会显示这条通知
PRIORITY_LOW 表示较低的重要程度
PRIORITY_HIGH 表示较高的重要程度,系统可能会将这类通知放大,或改变其显示顺序,比较靠前的位置
PRIORITY_MAX 最高的重要程度,必须让用户立刻看到,甚至做出相应的操作。

在创建通知通道对象时,还可以设置更多的属性

getId()—检索给定通道的ID
enablellights() -如果使用中的设备支持通知灯,则说明此通知通道是否应显示灯
setLightColor() -如果我们确定通道支持通知灯,则允许使用传递一个int值,该值定义通知灯使用的颜色
enablementVisuration()—在设备上显示时,说明来自此通道的通知是否应振动
getImportance()—检索给定通知通道的重要性值
setSound()—提供一个Uri,用于在通知发布到此频道时播放声音
getSound()—检索分配给此通知的声音
setGroup()—设置通知分配到的组
getGroup()—检索通知分配到的组
setBypassDnd()—设置通知是否应绕过“请勿打扰”模式(中断_筛选器_优先级值)
canBypassDnd() -检索通知是否可以绕过“请勿打扰”模式
getName()—检索指定频道的用户可见名称
setLockScreenVisibility() -设置是否应在锁定屏幕上显示来自此通道的通知
getlockscreendisibility() -检索来自此通道的通知是否将显示在锁定屏幕上
getAudioAttributes()—检索已分配给相应通知通道的声音的音频属性
canShowBadge()—检索来自此通道的通知是否能够在启动器应用程序中显示为徽章

大家可以根据我们的需要,自行选择

由于我们的项目开发时要保持严谨,因此我们需要加入对Android版本的判断,在Android O之前的还使用原来的写法,让我们贴出完善的写法

NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

            String id = "channel_1";
            String name = getString(R.string.app_name);
            NotificationChannel notificationChannel =
                    new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH);

            manager.createNotificationChannel(notificationChannel);

            Notification notification = new NotificationCompat.Builder(this, id)
                    .setContentText("hello world")
                    .setContentTitle("This is a test")
                    .setWhen(System.currentTimeMillis())
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .build();
            manager.notify(1, notification);
        } else {
            Notification notification = new NotificationCompat.Builder(this)
                    .setContentText("hello world")
                    .setContentTitle("This is a test")
                    .setWhen(System.currentTimeMillis())
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .build();
            manager.notify(1, notification);
        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Devoloper warning for package "com..." Failed to post notification on channel "null" see log for det 的相关文章

  • FreeRTOS学习-任务通知(Task Notification)

    1 简介 任务通知本质上就是一种进程间通信机制 之前的文章介绍的消息队列 事件组 信号量等都是一种间接的通信方式 xff0c 而任务通知则是更加直接的方式 xff0c 允许两个任务 xff08 或中断和任务 xff09 之间直接通信 2 任
  • go routine channel select

    一 go routine channel package main import 34 fmt 34 34 time 34 func worker id int c chan int for n 61 range c 读取channel f
  • Go_Goroutine和channel的使用、定时器、runtime、select、条件变量

    程序 程序是指编译好的二进制文件 存放在磁盘上不占用系统资源 cpu 内存 当程序在计算机上运行时 它就变成了一个进程 包括程序 数据和状态信息 程序是静态的 而进程是动态的 进程 进程是程序的实例 是资源分配的最小单位 当一个程序开始运行
  • 【Java】【NIO】【01】NIO设计理念

    什么是NIO NIO中的N 既有New的含义 也有Non blocking的含义 它是Java1 4之后推出来的一套非阻塞式IO接口 用于解决高并发 提升IO性能 NIO的主要改变 NIO主要的改变在于以下几点 通过Channel取代Str
  • Go并发和通道混乱

    我是 Go 新手 在理解并发和通道方面遇到问题 package main import fmt func display msg string c chan bool fmt Println display first message ms
  • WCF客户端代理初始化

    我正在使用 WCF 服务并使用 VS 2008 服务引用创建其代理 我正在寻找调用 WCF 服务方法的最佳模式 我是否应该在每次调用服务方法时创建客户端代理实例并在完成后立即关闭客户端 当我分析我的客户端应用程序时 我可以看到在初始化代理客
  • 通道发送是否是 goroutine 调度的抢占点?

    从我对Go调度器的理解来看 Go调度算法是部分先发制人 当 goroutine 调用函数或阻塞 I O 时 会发生 goroutine 切换 向通道发送消息时是否会发生 goroutine 切换 goroutine A ch lt mess
  • 如果包含 time.Sleep,则 Goroutine 不会执行

    下面的代码运行得非常好 package main import fmt func my func c chan int fmt Println lt c func main c make chan int go my func c c lt
  • Django Channels:当用户打开多个窗口时,group_send() 在发送到活动窗口时出现延迟

    背景 我正在本地 开发 服务器上开发聊天应用程序 Python 3 9 5 Django 3 2 通道 3 0 3 每个用户都可以在页面上看到 所有消息 部分 其中包含所有用户的消息 以及 我的消息 部分 仅包含他自己的消息 目标 所有消息
  • 我什么时候必须创建异步存根

    ManagedChannel managedChannel ManagedChannelBuilder forAddress localhost 8888 usePlaintext build Grpc Stub stub CLIGrpc
  • Spring Integration,删除出站通道适配器中的文件

    我正在使用 Spring Integration 轮询目录中的文件 在服务类中处理该文件 将该文件写入输出目录 然后删除原始文件 我有以下 XML 配置
  • 在golang中将chan转换为non chan

    是否可以让函数funcWithNonChanResult有如下接口 func funcWithNonChanResult int 如果我想让它使用函数funcWithChanResult与接口 func funcWithChanResult
  • Spring Integration 通道统计指标

    不知怎的 我没有捕捉到 Spring Integration Metrics 内容 我想要的是关于每秒有多少消息通过消息通道 最小和最大吞吐量是多少的统计输出 如果我使用newTicketChannel getSendRate 然后我变成以
  • 关闭从 TCP 连接读取的 goroutine,而不关闭连接

    我喜欢 Go 在内部处理 I O 多路复用的方式epoll还有另一种机制并自行调度绿色线程 此处为 go routine 从而可以自由地编写同步代码 我知道 TCP 套接字是non blocking and read会给EAGAIN当没有可
  • 渠道有什么用?

    在查看一些 Go 代码时 我发现了以下内容 ch make chan int 我在在线教程中查找了 Go Channels 的工作原理 https tour golang org concurrency 2 https tour golan
  • Django Channels/Daphne 内部服务器错误“‘dict’对象不可调用”

    我在连接到我的网站时收到此错误 因为它正在运行频道 2018 03 25 20 59 19 049 ERROR http protocol Traceback most recent call last File home virtuale
  • 使用 Socket.io 向多个房间发送消息?

    是否可以使用socket io向多个房间发送消息 发送至 1 个房间 io sockets in room emit id 发送到N个房间 io sockets in room1 room2 roomN emit id 是的 可以同时发送到
  • select 语句是否保证通道选择的顺序?

    继从这个答案 https stackoverflow com a 25795236 274460 如果一个 goroutine 在两个通道上进行选择 是否保证通道的选择顺序与其发送的顺序相同 我对发送者是单线程的情况特别感兴趣 例如 是否保
  • 在函数中将通道作为参数传递的不同方法

    我正在阅读一些Go代码 并说了几种传递Go通道的不同方法 也许它们是相同的 但我想知道是否有任何区别 因为我无法在线找到文档 1 func serve ch lt chan interface do stuff 2 func serve c
  • 伪TCP通道

    什么是伪 TCP 通道以及如何实现 伪 TCP 是一种协议 它实现了 TCP 的一些思想 通过不可靠的基于数据包的接口提供可靠的数据流 例如 如果您只能访问 UDP 但想要 一种可靠的方式来传递数据 则可以使用此方法 您可以在这里找到示例代

随机推荐

  • 基于php的课程网站络管理系统的设计与实现

    摘 要 管理系统是根据课程网站的需求而设计和实现的 主要 用于实现课程系统办公人员对其办公系统内所有公务员进行管理 实现对员工信息的查询 录入 修改和删除 以及发布重要通知 最新信息和规章制度 通过 网上办公 无纸办公 大大提高办公效率 体
  • 电脑关机了,内存就没数据了吗?

    前言 大家好 我是周杰伦 提到网络攻击技术 你脑子里首先想到的是什么 是DDoS 是SQL注入 XSS 还是栈溢出 RCE 远程代码执行 这些最常见的网络攻击技术 基本上都是与网络 软件 代码 程序这些东西相关 这也好理解 计算机网络安全
  • Qt项目实战 杂谈一二:中文乱码事情小,处理不好头发少

    Qt开发者来说 特别是初学者 往往最头疼的是编码的问题 举个例子 1 控件上设置中文标签 发现显示出来是乱码 怎么解决 如果标签是常量字符串 含中文 怎么处理 如果标签是变量 且可能包含字符串 又咋处理 2 Qt应用与其他应用存在进程间交互
  • 浏览器无法打开网页,报错:DNS_PROBE_FINISHED_BAD_CONFIG

    症状 手机的正常上网 电脑连不上网 浏览器打不开网页 电脑 用ping命令不能发现主机 这时判断DNS解析有问题 用ping命令能发现主机 这时判断DNS解析没有问题 解决办法 方案1 ipconfig flushdns 方案2 ping
  • openwrt 软件安装依赖冲突

    今天在安装一个插件curl 安装失败了 报错内容如下 root R619AC co router tmp tmp opkg install curl Installing curl 7 68 0 1 to root Downloading
  • 使用react-markdown与markdown-navbar实现在线浏览markdown文件并自动生成侧边导航栏目录(react项目)

    使用react markdown与markdown navbar实现在线浏览markdown文件并自动生成侧边导航栏目录 react项目 在项目中需要一个需求 需要将markdown文件放在react前端项目中实现浏览器在线浏览 修改mar
  • Python爬虫框架Scrapy实例(爬取腾讯社招信息并保存为excel)

    前言 在学习python爬虫的时候 曾经爬取过腾讯社招的网站 很久很久没有写爬虫 心血来潮打算爬一个练手 想起之前爬过腾讯社招网站 打开一看网页变了 行动 重新写一遍 这个网站相对简单 做了简单测试没有设置反爬 比较适合初学者拿来练手 搜索
  • 利用webhook实现发送通知到Slack

    概要 最近办公交流应用 Slack在各团队里大行其道 非常火热 今天我们就来说说怎么用他的incoming webhook来做一些同步通知 发送通知给Slack 我们先来看看这种incoming webhook来发送通知的优势 团队成员可以
  • Vulhub Apache HTTPD 换行解析漏洞

    漏洞介绍 漏洞原理 运维人员为了解决 Apache 解析漏洞 会使用 配置 来限制匹配到的最后一个扩展名 这种方式虽然对多个扩展名的解析漏洞进行了防护 但是因为 的正则匹配规则可以将 php n 的扩展名同样可以匹配到 php 的规则 产生
  • Android使用ViewPager实现图片的轮播

    一 概述 在现在的Android项目中 首页图片轮播是随处可见的 今天我们看看如何实现 先看效果图 二 实现 先给大家看看最简单的布局文件
  • 架构之路_深度探索C++对象模型总结

    本文主要参照 深度探索C 对象模型 一书 一 关于对象 C语言中 数据和处理数据的操作 函数 是分开声明的 不支持数据函数之间的关联性 称之为程序性的 procedural 1 1 对象类型 C 中可以通过独立抽象数据类型实现 比如 cla
  • Unity 中场景切换

    Unity游戏开发中 单个Scene解决所有问题似乎不可能 那么多个Scene之间的切换是必然存在 如果仅仅是切换 似乎什么都好说 但是在场景比较大的时候不想让玩家等待加载或者说场景与场景之间想通过一些画面 动画表现出一些让玩家期待的东西
  • 禅道数据库异机访问,远程连接,navicat连接

    禅道数据库异机访问 远程连接 navicat连接 在使用xxj job做执行器时遇到的问题 数据库端口可以在这里修改 可以在这里修改 opt zbox app zentao config my php 禅道数据库官方文档 该链接也有修改数据
  • TP5+Fastadmin+Log日志

    Log 日志 1 引入类 use think Log 2 记录日志 通过Log类的record 方法 记录一条日志 Log record 这是一条普通日志 记录一个错误级别的日志 使用error 方法 Log error 这是一条错误日志
  • 2022届实习+秋招大厂面试经验(后端开发+java)

    个人情况 待补充 求职方向 后端开发 大致情况 20年底在字节实习到21年6月底 转正 21年7月初开始在阿里实习到8月中 转正 随后面试了百度 腾讯和美团 均拿到offer 中间有挂过 被其他部门又捞了 最终选择阿里 我是22年秋季毕业
  • C++函数中返回智能指针的裸指针问题

    注意 如果不是CSDN网站显示本篇文章 请于底部点击 阅读原文 来阅读本篇文章 C 函数中返回智能指针的裸指针问题 要点 原始代码 解决办法 作为一项案例分析下 C 函数中返回智能指针的裸指针问题 要点 不要在函数中返回智能指针的裸指针出去
  • Flutter之MaterialApp使用详解

    如需转载 请尊重作者 注明出处 谢谢配合 22个参数 字段 类型 navigatorKey 导航键 GlobalKey home 主页 Widget routes 路由 Map
  • 非常简单的无闪刷新验证码原理

    非常简单的无闪刷新验证码原理 只有这一段事件触发语句全搞定 nclick this src GifCode asp newDate getTime GifCode asp验证码的图片 事件 nclick this src GifCode a
  • jsp中request经常是的获取参数的方法总结

    我的个人博客开通了 地址 https timewentby com 欢迎访问 下面将获取参数的方法都列出来说一说 request getParameter String name 获取指定name的值 若name有多个相同值则获取第一个va
  • Devoloper warning for package "com..." Failed to post notification on channel "null" see log for det

    使用通知时屏幕显示 这是因为我们使用的是Android O Android 8 0 之前的通知写法 而Android O之后引入了通知通道 Notification channel 重新定义通知内容中的应用程序类别 可以让开发者给予用户更精