标题栏不显示原因

#背景:

当前在写一个音乐播放器练手,发现手上的华为手机就是不显示Notification,但是手上的其他2台小米手机可以显示。

#分析:

开始以为是华为定制系统的适配的问题。

直到我在简书上看到这篇文章的这个点时,我忽然想起我的另外2台小米手机分别是Android 6.0 和 Android 7.0 的系统,而我的华为手机是Android 8.0 系统。这才想起是不是 8.0适配的问题。。。哎,先入为主的思想确实该改改了。

先看看你的Android studio 中 App目录下的build.gradle中的SDK的参数是多少。

 

先说说明一下这几个参数的作用:

compileSdkVersion:编译SDK版本

minSdkVersion:最低SDK版本

targetSdkVersion:目标SDK版本

其中compileSdkVersion要和targetSdkVersion数值一致,不然会报错。

26对应的是O版本(即Android 8.0 ),而在8.0中,假如这样创建Notification,标题栏是不会显示的(我现在手上只有一台8.0 的华为荣耀V10,其他8.0机型未查看现象,如果有出入还望各位指正)。

    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);showNotification();//showNot2();}private void showNotification() {Log.d(TAG, "showNotification");NotificationManager notificationManager =(NotificationManager) (this.getSystemService(Context.NOTIFICATION_SERVICE));NotificationCompat.Builder builder = new NotificationCompat.Builder(this);builder.setLargeIcon(BitmapFactory.decodeResource(this.getResources(), R.drawable.ic_launcher_background));builder.setSmallIcon(R.drawable.ic_launcher_background);builder.setContentTitle(this.getText(R.string.app_name));String strProgress = this.getResources().getString(R.string.app_name);builder.setContentText(strProgress);Notification notification = builder.build();notification.flags = Notification.FLAG_ONGOING_EVENT;notificationManager.notify(1, notification);}

#解决方式

compileSdkVersion,targetSdkVersion的数值设置为25或以下,使用上面这段代码的方式创建的Notification就能显示了。

当然,denpendencies里面的依赖包对应也要从26及以上修改为25及以下的版本,然后再同步。同步的时候,会报错,这个各位自己搞吧。你重新写一个Demo会发现就是Android版本适配的问题,与手机厂商无关。

#补充

上面例子(例子很简单,有需要的可以看看):https://github.com/stoneWangL/NotificationTest

如果你想做一些个性化的标题栏,比如说音乐播放器的标题栏,可以使用RemoteViews 来实现。这个网上就有很多例子了,自己去搜索一下吧。

真正原因

Notification在android 8.0以上设置时,需要设置Channel

参考来源:https://blog.csdn.net/qq_35749683/article/details/80451791

下面是我自己的记录

    private void initNotificationSon() {
//        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(MusicApplication.getContext());
//
//        //mBuilder.setSmallIcon(R.drawable.play_background02); // 设置顶部图标
//        Bitmap icBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.play_background02);
//        mBuilder.setLargeIcon(icBitmap);
//        mBuilder.setOngoing(true);
//        mBuilder.setPriority(Notification.PRIORITY_MAX);
//
//
//        notification = mBuilder.build();//构建通知
//        setNotification();
//        notification.contentView = remoteViews; // 设置下拉图标
//        notification.bigContentView = remoteViews; // 防止显示不完全,需要添加apiSupport
//        notification.flags = Notification.FLAG_ONGOING_EVENT;
//        notification.icon = R.drawable.anim_log;
//
//        startForeground(1, notification);//启动为前台服务String id = "stoneMusic_channel";String name="stoneMusic";NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(MusicApplication.getContext());Bitmap icBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.play_background02);mBuilder.setLargeIcon(icBitmap);mBuilder.setOngoing(true);mBuilder.setPriority(Notification.PRIORITY_MAX);mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {NotificationChannel mChannel =new NotificationChannel(id, name, NotificationManager.IMPORTANCE_LOW);mNotificationManager.createNotificationChannel(mChannel);Notification.Builder builder = new Notification.Builder(this , id);notification = builder.build(); //构建通知setNotification();notification.contentView = remoteViews; // 设置下拉图标notification.bigContentView = remoteViews; // 防止显示不完全,需要添加apiSupportnotification.flags = Notification.FLAG_ONGOING_EVENT;notification.icon = R.drawable.anim_log;mNotificationManager.notify(123, notification);//显示通知} else {notification = mBuilder.build();//构建通知setNotification();notification.contentView = remoteViews; // 设置下拉图标notification.bigContentView = remoteViews; // 防止显示不完全,需要添加apisupportnotification.flags = Notification.FLAG_ONGOING_EVENT;notification.icon = R.drawable.anim_log;mNotificationManager.notify(123, notification);//显示通知
//            startForeground(123, notification);//启动为前台服务}}

华为手机 标题栏 Notification 8.0 不显示相关推荐

  1. 鸿蒙试用体验,华为手机鸿蒙OS 2.0试用体验:手表可接收滴滴网约车动态 抬腕可看导航路线...

    华为在今天举行 HarmonyOS 2.0 手机开发者 Beta 活动,现场正式发布了 HarmonyOS 2.0 手机开发者 Beta 版本.在鸿蒙 OS 2.0 的支持下,手机.手表可以无缝互联, ...

  2. 鸿蒙系统手机开机,华为手机鸿蒙 OS 2.0 开机界面终于去掉了 Powered by Android

    原标题:华为手机鸿蒙 OS 2.0 开机界面终于去掉了 Powered by Android IT之家 5 月 5 日消息 上个月底,部分华为用户收到了鸿蒙 OS 2.0 开发者 Beta 公测版推送 ...

  3. 华为powered by android,华为手机鸿蒙 OS 2.0 开机界面终于去掉了 Powered by Android

    IT 之家 5 月 5 日消息   上个月底,部分华为用户收到了鸿蒙 OS 2.0 开发者 Beta 公测版推送,IT 之家也多次报道了与 EMUI 系统的对比. 今日,数码博主 @数码闲聊站 发布了 ...

  4. 华为p8升级android8系统资源,这些华为手机都可升Android8.0,告诉你必须升EMUI8.0的3个理由...

    原标题:这些华为手机都可升Android8.0,告诉你必须升EMUI8.0的3个理由 华为EMUI官方为了让更多华为.荣耀手机升级到基于Android8.0的EMUI8.0系统,让众多花粉都能吃上&q ...

  5. p10 android 9,一大波华为手机开启Android 9.0测试 包括Mate 9和P10系

    原标题:一大波华为手机开启Android 9.0测试 包括Mate 9和P10系 随着年底的到来,又有一波华为和荣耀手机.平板即将升级到最新的Android 9.0操作系统.近日华为官方社区" ...

  6. 华为手机怎么设置应用不全屏显示_手机投屏智能电视画面比例不合适怎么办?...

    手机投屏到电视的比例不对怎么办 知乎上有网友私下:"苹果手机屏幕镜像投屏到电视上,画面不能全屏,然后在网上查了一下是因为显示比例的问题,请问怎么解决?" 这个问题说简单也简单,说难 ...

  7. 华为双系统手机可以刷成单系统_「冯站长之家」今日聚焦:重大突破!华为手机鸿蒙系统2.0,正式面世!骂华为的“喷子”,可以休矣!...

    文|鲲鹏友 中国的华为,真的很难! 一方面,是美国的疯狂封锁. 先是不允许买美国的芯片,华为撑住了! 因为华为有自己设计研发的芯片! 但是美国变本加厉,不允许使用美国技术的公司,为华为制造自研芯片! ...

  8. 华为鸿蒙os对比安卓系统,华为手机鸿蒙OS 2.0、EMUI 11界面对比:安卓底层没了

    在今年九月份华为的开发者大会上,华为方面也是正式官宣了鸿蒙OS 2.0系统,也发布了鸿蒙OS系统具体的开源时间.前几日华为方面表示将会在今天正式发布鸿蒙OS 2.0系统.在今日果然如约到来,本次华为发 ...

  9. 华为手机升级回退_EMUI4.0回退EMUI3.1!通过华为手机助手也能实现

    一.回退注意事项 注意事项一:请详细阅读该版本的特性说明后,谨慎升级(以荣耀5X为例). 1.软件版本要求 该操作指导支持以下软件版本: 请确保手机没有私自进行ROOT,因用户ROOT手机导致的回退升 ...

最新文章

  1. 关于excel导入到封装成工具类jar包和web版门店收银网络无法无法连接上的解决方法...
  2. python训练营免费领取-21天训练营丨Python量化投资打卡第五期!学完押金全返!...
  3. EJB实体Bean怎样和数据库中表关联?
  4. Tomcat根目录下work文件夹的作用(转载)
  5. Linux 之七 SSH、SSL、OpenSSH、OpenSSL、LibreSSL
  6. 和qc哪个发展更好_城西公司举办2020年度QC成果推广交流发布会
  7. Java程序员从笨鸟到菜鸟之(一百零四)java操作office和pdf文件(二)利用POI实现数据导出excel报表...
  8. .NET 6 攻略大全(一)
  9. adb工具 手工操作android模拟器上的数据库
  10. 无任何网络提供程序接受指定的网络路径
  11. javascript 代码段整理
  12. GB28181协议常见几种信令流程(一)
  13. mysql workbench修改密码_更改MySQL用户密码
  14. 中南大学电磁场理论matlab,电磁场 点电荷 电场线 电势 matlab仿真 中南大学.doc_蚂蚁文库...
  15. 初中英语语法(013)-动词
  16. Ubuntu下配置FreeRADIUS + PPTP/L2TP + Mysql + daloRADIUS
  17. win10电脑计算机内存不足,win10系统电脑总是提示“计算机的内存不足”的恢复方案...
  18. 为啥在VS中使用scanf函数会有警告呢?如何解决此问题?(如何添加#define _CRT_SECURE_NO_WARNINGS 1)
  19. 安兔兔电脑ssd测试软件,安兔兔SSD测试软件测评,威钰战国NVMe SSD
  20. [ACNOI2021]仙人掌

热门文章

  1. 解决react项目启动报错:error Couldn't find a package.json
  2. input主动获取焦点
  3. 开源传感器网络平台OpenWSN
  4. 2021年中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂
  5. android 图片压缩总结1
  6. Mesh减面算法详解
  7. Android IOS平台AE动画库
  8. [转载]《博客园精华集》WF筛选结果(共39篇)
  9. CSS基础语法和盒模型
  10. SRM 613 div1 500pt