android 8.0 以后的版本,在创建通知栏的时候,加了一个channelId的东西。要想在上述版本中显示通知,总共分两步

1.创建Channel

  1. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
  2.   String channelId = "whatever"; //根据业务执行
  3.   String channelName = "whatever conent"; //这个是channelid 的解释,在安装的时候会展示给用户看
  4.   int importance = NotificationManager.IMPORTANCE_HIGH;
  5.   createNotificationChannel(channelId, channelName, importance);
  6.  
  7. }

2.引用

  1. Notification notification = new Notification.Builder(this,"whatever") //引用加上channelid
  2.   .setSmallIcon(R.drawable.donkey)
  3.   .setWhen(System.currentTimeMillis())
  4.   .setContentTitle("随便")
  5.   .setContentText("随随便便写")
  6.   .setContentIntent(pendingIntent)
  7.   .build();

为了兼容android所有版本,最好在代码里做一下适配

  1. manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
  2.  
  3. Intent intent = new Intent(this, AudioPlayerActivity.class);
  4. intent.putExtra("Notifiction",true);
  5.  
  6. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
  7.   String channelId = "whatever"; //根据业务执行
  8.   String channelName = "whatever conent"; //这个是channelid 的解释,在安装的时候会展示给用户看
  9.   int importance = NotificationManager.IMPORTANCE_HIGH;
  10.   createNotificationChannel(channelId, channelName, importance);
  11.  
  12. }
  13.  
  14. PendingIntent pendingIntent = PendingIntent.getActivity(this,1,intent,PendingIntent.FLAG_UPDATE_CURRENT);
  15. Notification notification = null;
  16. if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
  17.  
  18.   notification = new Notification.Builder(this,"whatever") //引用加上channelid
  19.     .setSmallIcon(R.drawable.donkey)
  20.     .setWhen(System.currentTimeMillis())
  21.     .setContentTitle("随便")
  22.     .setContentText("随随便便写")
  23.     .setContentIntent(pendingIntent)
  24.     .build();
  25. }else{
  26.   notification = new Notification.Builder(this)
  27.     .setSmallIcon(R.drawable.donkey)
  28.     .setWhen(System.currentTimeMillis())
  29.     .setContentTitle("随便")
  30.     .setContentText("随随便便写")
  31.     .setContentIntent(pendingIntent)
  32.     .build();
  33. }
  34.  
  35. manager.notify(1,notification);

如何解决android 通知栏不显示的问题的更多相关文章

  1. 解决Android Studio 无法显示Layout视图问题

    在Android Studio 当中,如果你选择的SDK的版本 与你所显示的视图版本不一致时,会出现这个错误 Exception raised during rendering:com/android ...

  2. 解决Android Graphical Layout 界面效果不显示

    解决Android Graphical Layout 界面效果不显示 qq463431476

  3. 不完全解决Android微信HTML5 播放视频的问题(不显示控制条,可交互)

    首先你需要知道以下内容: http://ad.weixin.qq.com/learn/2-3-3--%E9%80%9A%E7%94%A8%E5%BA%93 这是微信为广告商开放的API,我一直认为只有 ...

  4. Android通知栏介绍与适配总结(上篇)

    此文已由作者黎星授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 由于历史原因,Android在发布之初对通知栏Notification的设计相当简单,而如今面对各式各样的通知 ...

  5. Android通知栏介绍与适配总结

    由于历史原因,Android在发布之初对通知栏Notification的设计相当简单,而如今面对各式各样的通知栏玩法,谷歌也不得不对其进行更新迭代调整,增加新功能的同时,也在不断地改变样式,试图迎合更 ...

  6. 解决 Android Studio 乱码问题

    http://www.eoeandroid.com/thread-275485-1-1.html 很多同学都安装了Android Studio,但是发现中文是乱码,其实这个很好解决的.在IDE里点击F ...

  7. Android --通知栏Notification

    参考博客:Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它) //创建一个通知栏的Builder构造类 (Create a Notification Bui ...

  8. Android 通知栏用法例子

    当程序意外退出时,可以去掉通知栏上显示的图标 1.创建TestNotificationActivity activity类, package com.notioni.test.notification ...

  9. Android在ListView显示图片(重复混乱闪烁问题)

    Android在ListView显示图片(重复混乱闪烁问题) 1.原因分析 ListView item缓存机制: 为了使得性能更优,ListView会缓存行item(某行相应的View). ListV ...

随机推荐

  1. 6.Ansible Roles角色实战

    ==Roles小技巧:== 1.创建roles目录结构,手动或使用ansible-galaxy init test roles 2.编写roles的功能,也就是tasks. nginx rsyncd ...

  2. 松软科技web课堂:JavaScript Math 对象

    JavaScript Math 对象允许您对数字执行数学任务. 实例 Math.PI; // 返回 3.141592653589793 Math.round() Math.round(x) 的返回值是 ...

  3. 一条简单的更新语句,MySQL是如何加锁的?

    看如下一条sql语句: # table T (id )) delete : MySQL在执行的过程中,是如何加锁呢? 在看下面这条语句: : 那这条语句呢?其实这其中包含太多知识点了.要回答这两个问题 ...

  4. CentOS 7怎么删除mariadb

    参考链接:https://www.cnblogs.com/ytkah/p/10876824.html

  5. vue-property-decorator和typescript结合构建的class类组件,父组件触发子组件方法的方式

    vue-property-decorator和typescript结合构建的class类组件,父组件触发子组件方法的方式 class类组件示例 Father类组件 <template> & ...

  6. python连接sqlite3

    一.了解sqlite sqlite是一种嵌入式数据库,它的数据库就是一个文件.由于SQLite本身是用C写的,而且体积很小,所以经常被集成到各种应用程序中,甚至在IOS和Android的APP中都可以 ...

  7. C++ Debug 模式下程序崩溃: Expression: is_block_type_valid(header->block_use)

    出现这样的错误,可能有很多种原因,而我出现崩溃的原因是由于代码中定义了vector容器, 未对它进行初始化操作导致的, 只要对它的大小进行初始化操作就行了 崩溃代码:  vector<Rect& ...

  8. [译]Vulkan教程(13)图形管道基础之Shader模块

    [译]Vulkan教程(13)图形管道基础之Shader模块 Shader modules Unlike earlier APIs, shader code in Vulkan has to be s ...

  9. 深入浅出14个Java并发容器

    前言 不考虑多线程并发的情况下,容器类一般使用ArrayList.HashMap等线程不安全的类,效率更高.在并发场景下,常会用到ConcurrentHashMap.ArrayBlockingQueu ...

  10. vmalloc/vfree问题思考记录

    arm 32 用户进程陷入内核态通过vmalloc/vfree分配内存的流程 内核在更新非连续内存区对应的页表项是非常懒惰的.--<深入理解linux内核> arm 32 只有一个PGD ...