android O以后版本 自定义Notification

2023-10-31

最近在使用通知的时候,发现方法执行后,没有弹出通知,而是提示下面的错误:

Developer warning for package "com.example.test" Failed to post notification on channel "null" See log for more details.

经上网查证,是在Android O后 引入了一个叫NotificationChannel的类, 我们在sdk版本为26的时候,如果不加这个东西,就不能发通知。

所以务必在26以及之后的版本中添加 channelId。

    private void sendNotification() {

        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.baidu.com"));
        PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this,0,intent,0);

        NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

        NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this,"channel_1112");//一定要添加channelId,否则会报错Fail to post notification on channel "null"

        builder.setSmallIcon(R.mipmap.ic_launcher);  //此条件必须设置,不然不能显示
        RemoteViews view = new RemoteViews(getPackageName(), R.layout.notify_custom_layout); //自定义布局
        builder.setContent(view);

        if(Build.VERSION.SDK_INT >= 26)
        {
            //当sdk版本大于26
            String id = "channel_1112";
            String description = "143";
            int importance = NotificationManager.IMPORTANCE_LOW;
            NotificationChannel channel = new NotificationChannel(id, description, importance);
                     channel.enableLights(true);
                     channel.enableVibration(true);
            if (manager != null) {
                manager.createNotificationChannel(channel);
            }
            manager.notify(1, builder.build());

/*                     //使用系统样式
                     Notification notification = new Notification.Builder(MainActivity.this, id)
                    .setCategory(Notification.CATEGORY_MESSAGE)
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .setContentTitle("This is a content title")
                    .setContentText("This is a content text")
                    .setContentIntent(pendingIntent)
                    .setAutoCancel(true)
                    .setWhen(System.currentTimeMillis())
                    .setDefaults(Notification.DEFAULT_ALL)
                    .setPriority(Notification.PRIORITY_MAX)
                    .setFullScreenIntent(pendingIntent, true)
                    .build();
            manager.notify(1, notification);*/

        }
        else
        {
            //当sdk版本小于26
            Notification notification = new NotificationCompat.Builder(MainActivity.this)
                    .setContentTitle("This is content title")
                    .setContentText("This is content text")
                    .setContentIntent(pendingIntent)
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .build();
            manager.notify(1,notification);
        }
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android O以后版本 自定义Notification 的相关文章

随机推荐

  • Google Protocol Buffer

    hadoop的writable模式持久化接口 什么是 Google Protocol Buffer 假如您在网上搜索 应该会得到类似这样的文字介绍 Google Protocol Buffer 简称 Protobuf 是 Google 公司
  • Qt中常用宏定义

    1 Q UNUSED variable 定义但没有使用的变量在编译的时候有Warning提示 使用Q UNUSED variable 后可以屏蔽这类警告 2 Q ASSERT boolvalue 在Debug模式下 如果输入值为true 什
  • 敏感词过滤-DFA算法

    目录 DFA算法简介 Java实现DFA算法实现敏感词过滤 测试方法 创建DFAMap 根据DFAMap进行检验 完整代码 与前缀树的类似与不同 类似 不同 复杂度 DFA算法简介 在实现文字过滤的算法中 DFA是唯一比较好的实现算法 DF
  • Java Swing图书管理系统,界面漂亮、功能全,直接使用 窗体版本-400

    今天为大家分享一个java语言编写的图书管理程序 400 目前系统功能已经很全面 后续会进一步完善 整个系统界面漂亮 有完整得源码 希望大家可以喜欢 喜欢的帮忙点赞和关注 一起编程 一起进步 开发环境 开发语言为Java 开发环境Eclip
  • Qt中报错error: allocation of incomplete type ‘Ui::MainXXXX‘

    Qt中报错error allocation of incomplete type Ui MainXXXX 可能原因 一 类关联问题 是你的类设计头文件源文件和ui文件的关联可能有问题 解决方案如下 原文链接 每次在Qt中单独添加UI文件的时
  • Android SharedPreferences的替代方案MMKV

    什么是MMKV MMKV 是基于 mmap 内存映射的移动端通用 key value 组件 底层序列化 反序列化使用 protobuf 实现 性能高 稳定性强 https github com Tencent MMKV 为什么要替代Shar
  • 网络攻防学习(Web基础篇)——小迪安全

    一 一些常见的基本概念 1 DNS 1 域名解析系统 2 与HOST的关系 先在本地查找HOST文件 找不到在在网上查找相同的DNS 2 CDN 1 内容分发网络 目的是让用户能够更快的得到请求的数据 简单来说就是用来加速的 他是一个就近访
  • 线程是如何通讯的?

    线程通讯指的是多个线程之间通过共享内存或消息传递等方式来协调和同步它们的执行 在多线程编程中 通常会出现多个线程需要共同完成某个任务的情况 这时就需要线程之间进行通讯 以保证任务能够顺利地执行 线程通讯的实现方式主要有以下两种 共享内存 多
  • substring从指定字符串开始截取

    String filename F workspace ssh photo WebContent uploadFile 1444783552338pic jpg int begin filename indexOf ssh photo in
  • CCF计算机软件能力认证历年真题+超详细解析(C语言)

    这个历年试题解主要使用C语言编写 针对较为简单的第一题和第二题 适合初学者 程序中基本附有注释 希望可以帮到大家 会持续进行补充 欢迎评论区给出更好的解法与思路 2021 12 第 24次 202112 1序列查询 202112 2序列查询
  • 两个集合相等的例题_集合间的基本关系,你懂了吗?

    集合间的基本关系 在集合间的基本关系这一部分 首先要了解什么是子集 什么是真子集什么是集合相等 什么是空集 子集 一般的对于两个集合AB如果集合A中任意一个元素都是集合B中的元素 我们就说这两个集合有包含关系 称集合A为集合B的子集 记作A
  • 运算符

    运算符包括赋值运算符 算术运算符 逻辑运算符 位逻辑运算符 位移运算符 关系运算符 自增自减运算符 大多数运算符都是二目运算符 即运算符位于两个表达式之间 单目运算符的意思是运算符作用于单个表达式 一 赋值运算符 赋值语句的作用是把某个常量
  • 在C/C++代码中使用SSE等指令集的指令(5)SSE进行加法运算简单的性能测试

    下面是一个简单的测试SSE指令性能的程序 可以看到明显的性能提升 说明 程序中的timing h使用的是http blog csdn net gengshenghong article details 6973086中介绍的时间间隔获取方法
  • 关于特征值分解后续

    已经尝试将double型数据写成的特征值分解模块用在盲源分离的工程中 由于精度的问题 在频率较低的情况下可以分解成功 但是一旦频率过高 分解出的三路信号频率在一个位置 不满足要求 接下来准备看一下关于SVD分解运用在fpga中的文章 希望在
  • 在设计软件测试用例的原则,设计软件测试用例需要遵循的四条原则

    测试 由于成本因素的介入 决定了工程中设计好的测试用例原则不只有 覆盖住所要测试的功能 这一条 下面是我根据自己的工作经验总结出的其它四条原则 在这里抛砖引玉 希望大家拍砖和指正 这些原则特别是针对那些需要被自动化 并且是要被经常执行的测试
  • node js 路由模糊匹配_我们为什么需要Node中间层

    首先跳出前端 要看清node中间层在整个服务承担什么角色 首先我们要跳出前端的视野 把自己视角提示一个level 去鸟瞰整个项目 互联网时代其实就是信息时代 我们都是在利用数据交换 来产生价值 一个最简单的数据流 前端 gt 后端 gt 数
  • mysql基础知识点回顾(精简,不包含存储过程等)

    数据库的基础知识 数据分类 结构化数据 能够使用统一的结构表示的数据 如数字 字符等 半结构化数据 介于完全结构化和完全无结构化之间 如xml和html等 非机构化数据 长度可变 不能使用统一的结构表示的数据 如图像 音频 数据库的分类 关
  • 用Python实现简单登录注册小程序

    判断文件是否存在 pi 1 while pi lt 2 try a open mima a close except a open mima w a close else pi 3 a open mima r str 1 for line
  • 网卡获取ip地址失败

    linux redhat虚拟机上网卡获取ip地址失败 网卡设置为自动获取ip的 重启network服务提示如下信息 Bringing up interface eth0 RTNETLINK answers No such device 查看
  • android O以后版本 自定义Notification

    最近在使用通知的时候 发现方法执行后 没有弹出通知 而是提示下面的错误 Developer warning for package com example test Failed to post notification on channe