Android為應(yīng)用添加數(shù)字角標(biāo)的簡單實現(xiàn)
角標(biāo),英語是badge,也就是“徽章,像章,獎?wù)拢?象征,標(biāo)記”的意思。
效果圖

可以看到圖中的環(huán)信單聊這個app右上角的紅色的圓圈,里面有6這個數(shù)字的,就是一種角標(biāo)。
一般來說,應(yīng)用的角標(biāo)是用來標(biāo)記有多少條提醒(Notification)沒讀(unread),一旦點擊提示進(jìn)應(yīng)用閱讀了,角標(biāo)也會消失。
一些必要的說明
角標(biāo)原本是蘋果的iOS中的東西,Android原生并不支持角標(biāo),因為Google的意思是讓大家用Notification(提示欄)即可,不過無妨,厲害的Android第三方廠商可以通過在自定義的Launcher(啟動器)中操作來實現(xiàn)添加角標(biāo)。
原理
添加角標(biāo)的原理就是發(fā)送一個Broadcast(廣播),在廣播的Intent中指定需要被添加角標(biāo)的應(yīng)用的packageName(包名),className(類名),count(角標(biāo)數(shù)目)。當(dāng)然了,不同廠商的手機的角標(biāo)操作的Intent的action是不一樣的。
在AndroidManifest.xml中添加讀取和寫入角標(biāo)的權(quán)限:
<uses-permission android:name="com.sec.android.provider.badge.permission.READ" /> <uses-permission android:name="com.sec.android.provider.badge.permission.WRITE" />
設(shè)置角標(biāo)和清除角標(biāo)的工具類
public class BadgeUtils {
private static final String INTENT_ACTION = "android.intent.action.BADGE_COUNT_UPDATE";
private static final String INTENT_EXTRA_BADGE_COUNT = "badge_count";
private static final String INTENT_EXTRA_PACKAGENAME = "badge_count_package_name";
private static final String INTENT_EXTRA_ACTIVITY_NAME = "badge_count_class_name";
//設(shè)置角標(biāo)
public static void setBadgeCount(Context context, int badgeCount) {
Intent intent = new Intent(INTENT_ACTION);
intent.putExtra(INTENT_EXTRA_BADGE_COUNT, badgeCount);
intent.putExtra(INTENT_EXTRA_PACKAGENAME, getComponentName(context).getPackageName());
intent.putExtra(INTENT_EXTRA_ACTIVITY_NAME, getComponentName(context).getClassName());
context.sendBroadcast(intent);
}
//清除角標(biāo)
public static void removeBadge(Context context){
setBadgeCount(context,0);
}
//獲取ComponentName
private static ComponentName getComponentName(Context context) {
return context.getApplicationContext().getPackageManager()
.getLaunchIntentForPackage(context.getApplicationContext().getPackageName())
.getComponent();
}
}
注意:
因為不同手機廠商的action不同,所以可能導(dǎo)致某些手機不能使用,在此推薦一個github的第三方庫:https://github.com/leolin310148/ShortcutBadger
github地址:https://github.com/zhouxu88/AppBadge
完整demo下載地址:AppBadge_jb51.rar
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android實現(xiàn)繪制LocationMarkerView圖的示例代碼
LocationMarker是運動軌跡上Start、End, 以及整公里點上筆者自定義繪制的一個MarkerView。這篇文章主要介紹了Android實現(xiàn)繪制LocationMarkerView圖的示例代碼,希望對大家有所幫助2023-02-02
基于Android studio3.6的JNI教程之helloworld思路詳解
這篇文章主要介紹了基于Android studio3.6的JNI教程之helloworld,本文通過圖文實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03
Webview實現(xiàn)android簡單的瀏覽器實例代碼
這篇文章主要介紹了Webview實現(xiàn)android簡單的瀏覽器實例代碼的相關(guān)資料,需要的朋友可以參考下2016-02-02
Android側(cè)滑菜單之DrawerLayout用法詳解
今天小編就為大家分享一篇關(guān)于Android側(cè)滑菜單之DrawerLayout用法詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03
在當(dāng)前Activity之上創(chuàng)建懸浮view之WindowManager懸浮窗效果
這篇文章主要介紹了在當(dāng)前Activity之上創(chuàng)建懸浮view之WindowManager懸浮窗效果的相關(guān)資料,需要的朋友可以參考下2016-01-01
Android編程實現(xiàn)動態(tài)支持多語言的方法
這篇文章主要介紹了Android編程實現(xiàn)動態(tài)支持多語言的方法,涉及Android資源、控件及屬性相關(guān)操作技巧,需要的朋友可以參考下2017-06-06

