Android通知和通知Channel

Android studio 28 通知栏报错Failed to post notification on channel "null" 今天老师上课上到通知,教材是第一行代码,可能教材上的源码太久了,我在用安卓9的时候,模拟器报错Failed to post notification on channel “null”,在网上查了很久才知道,Notification在android 26以上设置时,需要设置渠道信息才可以正常显示通知,这是 官方文档地址[https://developer.android.google.cn/abo... 阅读详情

Android为Notification提供了Notification.Builder类,通过该类允许开发者更轻松的创建Notification对象。Notification.Builder提供了如下方法。

  • setDefault():设置通知LED灯,音乐,震动。
  • setAutoCancel():设置点击通知后,状态栏自动删除通知。
  • setContentTitle():设置通知标题。
  • setContentText():设置通知内容。
  • setSmallIcon():设置通知图标。
  • setLargeIcon():设置通知大图标。
  • setTick():设置通知在状态栏的提示文本。
  • setContentIntent():设置点击通知后要启动的程序组件对应的PendingInent。

发送Notification的步骤:

  1. 调用getSystemServices(NOTIFICATION_SERVICE)方法获取系统的NotificationManager服务。
  2. 创建NotificationChannel对象,并在NotificationManager上创建该Channel对象。
  3. 通过构建器创建一个Notification.Builder对象。
  4. 为Notification.Builder设置通知的各种属性。
  5. 创建MessagingStyle和Message,通过Message设置消息内容,为Notification.Builder设置MessagingStyle后创建Notification.
  6. 通过NotificationManager发送Notification。
package com.example.helloworld;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.Person;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {
    public static final int NOTIFICATION_ID =0x123;
    public static final String CHANNEL_ID = "lytcoding";
    private NotificationManager nm;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取系统的NotificationManager对象
        nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        //设置channel名字
        String name = "test channel";
        //创建NotificationChannel对象
        NotificationChannel channel = new NotificationChannel(CHANNEL_ID,name,NotificationManager.IMPORTANCE_HIGH);
        //设置channel的描述信息
        channel.setDescription("测试Channel的描述信息");
        //设置闪光灯
        //channel.enableLights(true);
        //channel.setLightColor(Color.RED);
        //设置震动
        //channel.enableVibration(true);
        //channel.setVibrationPattern(new Long[]{0L,50L,100L,150L});
        //在NotificationManager上创建该通知channel
        nm.createNotificationChannel(channel);
        Button sendNotification = (Button) findViewById(R.id.SendNotification);
        sendNotification.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                send();
            }
        });
    }

    public void send(){
        Person p = new Person.Builder()
                .setName("曹操")
                .build();
        //设置通知的参与者
        Notification.MessagingStyle messagingStyle = new Notification.MessagingStyle(p);
        //设置标题
        messagingStyle.setConversationTitle("一条新的通知");
        //创建一条消息
        Notification.MessagingStyle.Message message =
                new Notification.MessagingStyle.Message("胜利了,大家一起庆祝!!",System.currentTimeMillis(),p);
        //添加消息
        messagingStyle.addMessage(message);
        Notification notify = new Notification.Builder(this,CHANNEL_ID)
                .setAutoCancel(true)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setStyle(messagingStyle)
                .build();
        //发送通知
        nm.notify(NOTIFICATION_ID,notify);
    }
}

 

Android 13音乐App开发:用MediaSessionCompat搞定通知栏、锁屏和耳机控制(附完整Demo) 本文详细介绍了如何使用MediaSessionCompat在Android 13上开发音乐播放器应用,实现通知栏、锁屏和耳机控制的全链路管理。通过MediaSession框架,开发者可以统一处理播放状态、元数据和多设备控制,提升代码可维护性和用户体验。文章包含完整Demo和优化技巧,特别适合需要构建现代音乐播放器的Android开发者。 阅读详情

相关推荐

【Chipyard】Gemmini快速上手

Gemmini 加速器在 ResNet50 推理任务中表现出计算密集型优势,核心操作周期分布符合深度学习模型特征,推理预测流程完整且测试通过,为后续硬件优化和模型部署提供了有效参考。

2355

APK里面注入渠道(channel)信息,不改变apk签名

最近有业务需求,需要向已经打包的APK里面注入渠道(channel)信息,方便APK下载安装之后进行渠道归因。向APK里面注入渠道信息已经有比较成熟的方案美团walle。

键盘的起始页 3555

ESP32+ST7789 LCD屏实战:5分钟搞定中文显示与图片渲染(附完整代码)

本文提供了一份详细的ESP32驱动ST7789 LCD屏幕的实战指南。通过清晰的SPI硬件连接说明、ESP-IDF框架下的初始化代码,以及图片渲染与中文字库构建的核心算法,帮助开发者快速实现中文显示与图片渲染功能,并附有完整的代码示例和性能优化技巧。

weixin_29189377的博客 437

android 通知消息合并,还没用上Android N没关系,关于其“通知”的这些变化也许你想知道...

Android通知往往是应用和用户之间至关重要的交互形式。为了提供更好的用户体验,Android N在通知上做出了诸多改进:收到消息后的视觉刷新,改进对自定义视图的支持,扩展了更加实用的直接回复消息的形式,新的MessagingStyle,捆绑的通知。同样的通知,不一样的“面貌”首先,最明显的变化是通知的默认外观已经显著改变。除了应用程序的图标和名称会固定在通知内,很多分散在通知周围的字段也被折叠...

weixin_39621819的博客 1125

StarUML最新版汉化与破解二合一教程:5分钟搞定永久使用

本文提供StarUML最新版的高效使用指南,涵盖从安装到深度定制的全流程优化方案。包括软件获取最佳实践、界面个性化设置、核心建模技巧、团队协作策略及性能优化建议,帮助架构师和开发团队提升UML建模效率。特别推荐版本控制集成和文档自动化输出方案,适用于各类规模的项目开发。

weixin_42530732的博客 450

基于STM32F103的智能门禁门锁门卫系统设计

本文设计了一种基于STM32F103单片机的智能门禁系统,集成了密码、射频IC卡和指纹识别三种验证方式。系统采用模块化设计,包含MFRC522射频模块、AS608指纹模块、矩阵键盘、OLED显示和舵机控制等硬件,实现了身份验证、密码修改、IC卡/指纹管理以及安全防护功能。测试结果表明系统响应迅速(密码验证250ms、指纹验证600ms)、功耗低(待机50mA),且具备掉电密码保存功能。该系统操作简便、功能完善,适用于家庭和办公场所,具有较高实用价值。未来可扩展远程控制、人脸识别等功能以进一步提升智能化水平。

3254968421的博客 318

如何从Android中的任何应用阻止通知

Android’s notification system is easily one of its most powerful features. But with great power comes great responsibility, and some apps choose to abuse this. If you’re sick of constant notifications...

culul01313的博客 2506

基于咸鱼最新九宫格图标验证码的语义增强模型识别

本文探讨了破解复杂验证码的技术思路,重点分析了某平台的九宫格验证码应对策略。作者提出通过图像语义抽取和增强技术来扩充数据集:先采集少量真实样本,利用形态学操作进行前增强生成变形图像,再通过叠加背景噪声进行后增强。同时强调真实数据集的重要性,建议采用真实+生成数据的混合训练方法。实验表明该方法可使模型准确率达到95%以上,但作者特别声明本文仅供技术研究,严禁用于非法用途。

码王吴彦祖的博客 601

在Android中简单使用消息通知

Android中通知消息的简单使用~

liny70858的博客 3658

QT开发技术 [QXlsx 导出大量数据的崩溃大坑]

QXlsx 是一个基于 Qt 框架开发的开源库,用于读写 Excel 文件(.xlsx 格式),无需依赖 Microsoft Office 或第三方库。以下从多个方面为你详细介绍 QXlsx:主要特性读写功能:支持创建、读取和修改 Excel 文件,能处理单元格的数值、公式、格式等基本操作。样式设置:可以设置单元格的字体、颜色、对齐方式、边框等样式,还能创建自定义样式并应用到多个单元格。图表支持:支持创建多种类型的图表,如柱状图、折线图、饼图等,并能对图表的样式和属性进行配置。

weixin_45397344的博客 653

番外篇 | 复现HIC-YOLOv5,助力小目标物体的检测

在本文中提出了一种改进的YOLOv5算法:HIC-YOLOv5,用于小目标检测,具有更好的性能和较低的计算成本。🌈

小哥谈 1129

Android R 通知新特性—人与对话(气泡窗)

Android R 通知新特性—人与对话(气泡窗) google在之前的版本就提出了一个“people and conversations”的概念,目的是在手机界面中增加交流类UI的比重,因为毕竟用户使用手机,有很大一部分行为都是基于社交去进行,社交是人与社会沟通的基础.

weixin_40637496的博客 6962

YOLOv11改进缝合注意力 | 深度优化的BiFormer模型-结合BiLevel Routing Attention与深度可分离卷积的创新应用(附代码)

YOLO(You Only Look Once)系列目标检测算法一直以来都是计算机视觉领域的热门选择。随着YOLOv11的发布,它在许多实际应用场景中取得了显著的性能提升。然而,面对日益复杂的目标检测任务,单纯依赖卷积神经网络(CNN)在某些情况下已经显得力不从心,特别是在处理小尺度、密集目标以及遮挡目标时,卷积操作的局部性限制了模型的表达能力。

一键难忘的博客 715

如何快速安装VPKEdit:Windows、macOS与Linux三平台部署一步到位

**VPKEdit** 是一款 MIT 开源的打包文件管理工具,可以**创建、读取、写入** VPK、WAD、PAK、PK4、ZIP、BSP 等数十种游戏资源包格式,并提供图形界面(GUI)与独立的 `vpkeditcli` 命令行工具两种形态。无论你想解包游戏资源还是重新打包,本文都能在几分钟内帮你在 Windows、macOS 或 Linux 上完成 **VPKEdit 安装**并验证可用。

gitblog_00736的博客 1023

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Android 通知渠道Notification Channel

Android8.0也就是API26开始要求通知设置Channel,否则会报错   查看官方通知: 通知 在 Android 8.0 中,我们已重新设计通知,以便为管理通知行为和设置提供更轻松和更统一的方式。这些变更包括: Android 8.0 中的通知长按菜单。 通知渠道:Android 8.0 引入了通知渠道,其允许您为要显示的每种通知类型创建用户可自定义的渠道。用户界面将...

yh18668197127的博客 2万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android 设备管控开发实战:如何只允许指定 App 或 Channel 的通知出现?

受控设备上通常不需要“关闭所有通知”,而是只保留业务真正需要的几类:管控端自己的前台服务通知、指定业务 App 的全部通知,或者某个 App 中用于告警的单一 Channel。其他营销、推荐和无关提醒都不应留在通知栏。这篇只解决这个功能。三方设备使用用户明确开启的通知使用权,在通知发布后立即判断并取消;自研 ROM 把同一套匹配规则前移到系统通知入队之前。策略下发、版本管理、保活、状态栏和手势控制不在本文展开。本文示例只读取通知的包名与 Channel ID,不读取标题、正文、验证码等内容。

咸饭的博客 398

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

安卓通知栏报错 :Failed to post notification on channel "null"

这个问题是在写一个项目中的通知消息模块时出的,报错 Failed to post notification on channel “null” channel是频道的意思,意思就是我没有设置频道,然后看看notifaction.bulider里有这个方法: notifi.setChannelId(channel); 果断的试了下结果还是报错,里面传入的是一个string的字符串,被这个问题

今天的风儿好耀眼的博客 1万+

android 8.1之后通知发布设置LED,振动。

android 8.1之后通知的使用,必须遵循一定规范,需要注意 应用层的使用方法,必须加SmallIcon否则报错,必须使用Channel,否则报错 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationChannel mChannel = new NotificationC...

wed110的专栏 955

移动端通知分组优化:从Android Channel到iOS Thread的完整实践

通知系统是现代移动应用的核心组件,负责在系统与用户之间建立高效的信息通道。其基本原理是通过操作系统提供的API,将服务器或应用内部的事件以视觉、听觉或触觉的形式告知用户。这项技术的核心价值在于平衡信息送达与用户体验,避免因通知泛滥导致用户关闭权限,从而保障关键消息的触达率。在实际应用场景中,社交、协作、智能助手等高频交互型App尤其需要精细化的通知管理策略。本文聚焦于**通知分组优化**这一关键技术实践,通过对比**Android通知渠道(Notification Channel)**与**iOS线程标识符

weixin_33754065的博客 498

Android创建notification channel通知通道---函数/代码

【代码】Android创建notification channel通知通道。

155

Android通知详解

Android通知+例子什么是个通知通知的知识一个例子结果演示代码编写activity_main.xmlMainActivity.classic_android图片 什么是个通知 就是每次聊qq、微信,头顶上弹出来的那个玩意,或者并夕夕告诉你什么什么减价了之类。就下面这个玩意: 通知的知识 API26以上之后,通知要被放在很多个channel中,每个channel中有很多个通知,用户可以选择屏蔽某一个channel,也可以选择屏蔽所有的通知。也就是先创建一个Channel,之后在里面创建通知。 通

cz20010101的博客 874

关于Andorid Notification Channel(Android8.0 通知渠道)内容学习笔记

Date: MM/DD/YYYY Auther: HABIN ℹ️NOTE 写通知渠道用的原因是自己在改官方系统时钟7.1.1(从aosp7.1.1上拉下来的)然后运行到9.0 遇到所有时钟通知都会主动弹出(需求有些不需要主动弹出),一开始以为是通知优先级内容setPriority设置问题(8.0以下确实是这个方法控制),后面发现是渠道的原因,记录这篇是为了方便以后翻阅 本文内容基于官方内容整理https://developer.android.google.cn/guide/topics/ui/no.

bingeho的博客 5295

android通知栏消息

android 在通知栏弹出消息, 看了很多博客,方到代码里都略有问题,最后只能去官方文档找示例。 官方文档 这个通知栏既可以通过service触发,也可以通过activity触发。 public class Notify { private NotificationManager manager; private Notification.Builder builder; ...

zslngu的博客 4727

android8.0自定义通知,《Android进阶之"Android8.0通知详解"》

Android8.0更新了Notification的显示方法。 如果我们在API>26的情况下还按照之前的方式设置Notification的话会有一个Toast提示:Failed to post notification on channel = "null"。 这是因为Android8.0加入了NotificationChannel的相关内容。加入这个新内容有什么好处呢? 比如当之前我们一...

weixin_36201981的博客 451

Flutter 通知栏通知

本章节叙述Flutter 通知栏通知功能,主要是使用Flutter与原生交互功能调用Android发送通知。 效果图 所需知识 Flutter构建通道机制Channel Android创建通知渠道NotificationChannel发送通知 实现代码 Flutter端主要实现与原生交互并传递数据 //获取到插件与原生的交互通道 static const mNotifica...

马志武的博客 1万+

Android 中各种通知(Notification)的使用

文章目录通知通道(Channel)通知重要性级别创建基本通知大文本样式通知带图标样式通知大图标样式通知响应用户点击添加操作按钮添加直接回复操作进度条通知设置分类设置锁屏下通知可见性通知导航自定义通知自定义通知内容布局完全自定义通知通知 Badge显示、更新通知取消通知注意事项参考文档 通知通道(Channel) 从 Android 8.0 开始,显示通知必须先创建通道: NotificationManager notificationManager = (NotificationManager) getSy

Airsaid 5125
上一篇: Ubuntu下载Android源码
下一篇: 布局小记
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值