Android代码设置角标,Android上的Badge,快速实现给应用添加角标
應用角標是iOS的一個特點,原生Android并不支持。或許是由于當時iOS的通知欄比較雞肋(固然如今已經改進了不少),而Android的通知欄功能強大?因此才出現了一方依賴于數字角標,一方堅持強大的通知欄,在平常使用中這兩種交互方式都各有特點,沒什么違和感。可是啊,總有人想搞些大新聞:html
當收到推送而應用沒有未讀角標時:
安卓---什么爛手機!安卓就是不行!
蘋果---我靠,這應用居然連角標都不支持!刪掉。android
因此啊,眾多手機廠商的定制系統或者Launcher都效仿iOS自定義了該功能。若是嫌適配麻煩,能夠看看Github上的兩個項目:git
我嘗試了ShortcutBadger(1.1.13):3d
使用下來,在華為、三星、小米、索尼、APEX上實測成功。可是發現了兩個問題:調試
一、有些設備可能會拋出異常,致使設置失敗。實測在Samsung Galaxy Note3(Android5.0)上就是如此,發現異常是在這里拋出的htm
這里顯示角標是經過發送廣播實現,而canResolveBroadcast方法是檢查是否存在該廣播對應的接收器,不知為什么有些設備會找不到。blog
因此我down了一份代碼,直接改了canResolveBroadcast方法,而后手動把aar包導入到項目中使用了文檔
二、小米比較特別,他的角標數量直接由通知欄數量決定。用以上方法處理時,通知欄會同時出現一條空的通知。因此小米的角標我作了單獨處理
在收到推送消息建立通知時,經過反射把角標數量設置進通知中,這也是官方文檔中的作法。
值得注意的一點是,若是你的通知有好幾類,好比:有郵件的、有新動態的等,郵件的通知是一封郵件對應一個通知,而新動態是折疊在一塊兒的(你有xx條新動態未讀),甚至還有其余不是透傳形式的推送通知的。我原覺得在設置角標的時候要手動計算出當前全部通知的數量,但通過驗證,咱們只須要關心當前收到的這條消息,若是是折疊的就要用上述方法手動設置數量,其余的并不須要處理,一條通知對應的角標數量默認就是一,同時MIUI會自動計算通知數的總和去更新角標。
三、在榮耀9上調試demo,發現一直無效,提示權限問題,可是權限是的確申請了的。
無心發現申請了 以后就解決了。
最后,若是你是針對某個系統或Launcher單獨寫時,能夠直接搜索各家的適配方法,但無論是哪一種。。千萬別忘了在AndroidManifest中有沒有添加相應的Badge權限啊~
總結
以上是生活随笔為你收集整理的Android代码设置角标,Android上的Badge,快速实现给应用添加角标的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: @async 如何返回list_图解 A
- 下一篇: nginx文件系统大小_详解Nginx系