NotificationCompat.Builder中setSmallIcon()的问题

  这几天遇到学习notification的时候遇到很多小问题,单单是复制下api文档上面的源代码都会出各种问题。本人手机是华为的。开始是状态栏不显示notification的问题,后来通过升级系统,卸载全部的清理软件才显示出来(应该是这些手机清理软件自动的把一些notification给隐藏了,比如360清理大师)。然后有遇到了新的问题,就是调用builder的setSmallIcon()方法没有效果,然而这些在Android官方手机系统上面是都没有问题的。就开始怀疑是各个手机厂商定制Android系统的原因。在网上搜了下,不止华为手机有这种问题,其他手机,比如小米的MIUI的一些系统也出现了同样的问题。在这些手机上调用该方法是无效的,无法改变通知栏的icon图标。默认的notification图标就是我们的应用的图标。我又在各种手机上试验了下各种效果,分别为华为6.0系统,Android官方6.0系统和Android官方4.4.2系统。代码如下:

1 Bitmap abcd =  BitmapFactory.decodeResource(getResources(), R.drawable.abcd);
2          
3         NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
4                 MainActivity.this).setSmallIcon(R.drawable.abc)
5                 .setContentTitle("我的notification").setContentText("嘿嘿嘿嘿嘿嘿")
6                 .setLargeIcon(abcd);

其中:图片abc为facebook的图标,abcd为一个小女孩。

效果依次如下:

可以看到效果差异之大。在华为手机上是被大图标覆盖。小图标默认显示的是应用的icon,而Android官方6.0是首先在通知栏显示小图标,然后滑下来之后是在大图标的右下角显示小图标,而Android4.4.2系统是在通知栏显示小图标,滑下来之后左边显示大图标,右边显示小图标。

 

posted @ 2016-05-27 17:38  虚心使人进步  阅读(16355)  评论(0编辑  收藏  举报