安卓原生的系統(tǒng)Launcher并不支持角標(biāo)顯示,但是大部分手機(jī)廠商或者第三方定制的Launcher都有做在AOSP代碼的基礎(chǔ)上做支持憎亚,不同Launcher提供的接口又略有不同(主流的做法其實(shí)都是發(fā)送特定廣播給Launcher弄慰,然后由Launcher實(shí)現(xiàn)效果,即監(jiān)聽發(fā)出的廣播來進(jìn)行快捷方式的修改)什往,所以需要分別進(jìn)行適配慌闭。
一驴剔、MIUI
1、默認(rèn)的情況
當(dāng)app 向通知欄發(fā)送了一條通知 (通知不帶進(jìn)度條并且用戶可以刪除的)仔拟,那么桌面app icon角標(biāo)就會(huì)顯示1.此時(shí)app顯示的角標(biāo)數(shù)是和通知欄里app發(fā)送的通知數(shù)對應(yīng)的利花,即向通知欄發(fā)送了多少通知就會(huì)顯示多少角標(biāo)。
2臀栈、通知可以定義角標(biāo)數(shù)
例如 有5封未讀郵件挠乳,通知欄里只會(huì)顯示一條通知,但是想讓角標(biāo)顯示5. 可以在發(fā)通知時(shí)加個(gè)標(biāo)示盟蚣。
修改MIUI的原理是通過反射拿到Notification的私有屬性extraNotification卖怜,但是這個(gè)extraNotification在MIUI系統(tǒng)中重定義了,這個(gè)類就是MIUI系統(tǒng)中的android.app.MiuiNotification這個(gè)類奄抽,這個(gè)類里面有個(gè)私有屬性messageCount,我們只要改變這個(gè)messageCount值就能顯示的改變app icon的角標(biāo)數(shù)了额划。
http://dev.xiaomi.com/docs/appsmarket/technical_docs/badge/
二档泽、華為EMUI Badge
角標(biāo)是華為桌面提供給各應(yīng)用一種展示未讀信息的操作,以未讀信息的數(shù)字合成一張圖片并繪制到該應(yīng)用圖標(biāo)的右上角品抽。只能支持華為設(shè)備的功能,且系統(tǒng)版本必須在EMUI4.1及以上甜熔。從保護(hù)用戶體驗(yàn)的角度出發(fā)腔稀,華為角標(biāo)暫時(shí)只對較大型的純即時(shí)通訊類應(yīng)用(例:聊天工具、郵箱)和大型企業(yè)的內(nèi)部辦公應(yīng)用開放焊虏。
http://developer.huawei.com/wiki/index.php?title=%E5%8D%8E%E4%B8%BA%E6%A1%8C%E9%9D%A2%E8%A7%92%E6%A0%87%E4%BB%8B%E7%BB%8D
三诵闭、Sony Badge
https://forsberg.ax/en/blog/android-notification-badge-app-icon-sony/
四疏尿、Samsung Badge
通過三星Launcher自己的廣播,來給應(yīng)用添加角標(biāo):此方法不需要任何權(quán)限褥琐,只需要知道App的包名和類名敌呈。因此,你當(dāng)然可以在程序里面給其它任意一個(gè)App設(shè)置任意數(shù)量的角標(biāo)吭练,而且沒有任何提示褐鸥。
五赐稽、LG Badge
Samsung好基友浑侥,三星能用的寓落,LG幾乎都可以用荞下,連Bug都一樣。
六仰税、酷派 Badge
簡單粗暴,不支持河绽。我喜歡唉窃,類原生。
七苟跪、ZUK ZUI Badge
http://developer.zuk.com/detail/12
八蔓涧、HTC Badge
HTC雖然沒落了蠢笋,但好歹是第一只Android的寄生獸,好歹也支持下昨寞。其原理同樣是使用廣播援岩。
九、錘子
錘子很遺憾羽峰,使用的是原生Launcher進(jìn)行的修改,只有System App具有獲得角標(biāo)的權(quán)限值纱。
十坯汤、Nova Badge
Nova是一款非常贊的Launcher,作為第三方Launcher疆偿,它的使用率非常高(當(dāng)然是在國外)搓幌。該Launcher作為業(yè)界良心溉愁,提供了content provider供外界調(diào)用。與ZUK手機(jī)一樣叉钥,良心大大的好投队,代碼如下:
全文都是復(fù)制:見以下參考文獻(xiàn)
1、知乎作者? Young Z Wang?? https://www.zhihu.com/question/22317508/answer/75961273
2息楔、華為:? http://developer.huawei.com/wiki/index.php?title=%E5%8D%8E%E4%B8%BA%E6%A1%8C%E9%9D%A2%E8%A7%92%E6%A0%87%E4%BB%8B%E7%BB%8D
3扒披、https://github.com/leolin310148/ShortcutBadger