Android為應(yīng)用添加角標(biāo)

github地址(完整demo下載)

https://github.com/zhouxu88/AppBadge

效果圖

APP角標(biāo).jpg
  • 可以看到圖中的環(huán)信單聊這個app右上角的紅色的圓圈,里面有6這個數(shù)字的,就是一種角標(biāo)。

  • 角標(biāo),英語是badge,也就是“徽章,像章,獎?wù)拢?象征,標(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)然了,不同廠商的手機(jī)的角標(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();
    }
}

注意:
因為不同手機(jī)廠商的action不同,所以可能導(dǎo)致某些手機(jī)不能使用,在此推薦一個github的第三方庫
https://github.com/leolin310148/ShortcutBadger

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容