這幾天遇到學習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系統是在通知欄顯示小圖標,滑下來之后左邊顯示大圖標,右邊顯示小圖標。