![](/img/trans.png)
[英]On Android setting badge number on app icon when app is in background or killed when receiving notification like facebook app
[英]How does Facebook add badge numbers on app icon in Android?
我知道這里有幾個Q詢問是否有可能在Android應用程序中添加徽章並且他們最終都沒有答案...
但不知何故,Android的最新Facebook測試版似乎做了一些至少看起來像徽章的東西,即使它在技術上並非如此。
在該帖子中,其中一位評論者表示,它與TouchWiz有某種關聯。 而且他們在這里也提到它是“S3 TouchWiz Jelly Bean Addon”的一個特色。
我仍然希望了解如何做到這一點,以及是否有一些我可以在我自己的應用程序中使用的API(當在適當的環境中運行時 - 即FB演示此行為的同一設備)?
嗨,你可以簡單地使用這個庫。
支持:索尼,三星,LG,HTC,小米,華碩,ADW,APEX,NOVA,華為,ZUK,OPPO
添加:
int badgeCount = 1;
ShortcutBadger.applyCount(context, badgeCount);
去掉 :
ShortcutBadger.applyCount(context, 0);
我已經弄清楚如何為索尼設備做到這一點。
我在這里寫了博客。 我也張貼了關於這一個單獨的SO問題在這里 。
Sony設備使用名為BadgeReciever
的類。
在清單文件中聲明com.sonyericsson.home.permission.BROADCAST_BADGE
權限:
向BadgeReceiver
廣播一個Intent
:
Intent intent = new Intent(); intent.setAction("com.sonyericsson.home.action.UPDATE_BADGE"); intent.putExtra("com.sonyericsson.home.intent.extra.badge.ACTIVITY_NAME", "com.yourdomain.yourapp.MainActivity"); intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", true); intent.putExtra("com.sonyericsson.home.intent.extra.badge.MESSAGE", "99"); intent.putExtra("com.sonyericsson.home.intent.extra.badge.PACKAGE_NAME", "com.yourdomain.yourapp"); sendBroadcast(intent);
完成。 廣播此Intent
,啟動器應在您的應用程序圖標上顯示徽章。
要再次刪除徽章,只需發送一個新廣播,這次SHOW_MESSAGE
設置為false:
intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", false);
我已經排除了有關我如何找到這個以保持答案簡短的細節,但這些都在博客中提供。 對某人來說,這可能是一個有趣的讀物。
沒有標准的方法來實現這一目標; 索尼或三星等許多制造商已經在他們自己的Android定制中實現了它。
例如在三星中,您必須使用BADGE_COUNT_UPDATE操作廣播一個意圖,讓MainActivity
成為您的主要活動類,並count
您要在應用圖標中顯示的數字,請注意0將隱藏徽章:
Intent intent = new Intent("android.intent.action.BADGE_COUNT_UPDATE");
intent.putExtra("badge_count", count);
intent.putExtra("badge_count_package_name", context.getPackageName());
intent.putExtra("badge_count_class_name", MainActivity.class.getName());
context.sendBroadcast(intent);
Sony設備使用"com.sonyericsson.home.action.UPDATE_BADGE"
操作及其自定義附加內容@Marcus Answered,因此您必須向應用清單添加"com.sonyericsson.home.permission.BROADCAST_BADGE"
權限,並且:
Intent intent = new Intent("com.sonyericsson.home.action.UPDATE_BADGE");
intent.putExtra("com.sonyericsson.home.intent.extra.badge.ACTIVITY_NAME", MainActivity.class.getName());
intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", true);
intent.putExtra("com.sonyericsson.home.intent.extra.badge.MESSAGE", String.valueOf(count));
intent.putExtra("com.sonyericsson.home.intent.extra.badge.PACKAGE_NAME", context.getPackageName());
context.sendBroadcast(intent);
注意:最好查詢應用程序的數據( context.getPackageName()
, MainActivity.class.getName()
),而不是硬編碼以防萬一您將來進行重構。
但不知何故,Android的最新Facebook測試版就是這樣......
不是根據包含您鏈接到的屏幕截圖的論壇帖子 。 引用vakama94:
嗯,這實際上是TouchWiz,而不僅僅是應用程序。 我有一個運行JellyBean 4.1.2的Galaxy S II,它與其他一些應用程序相同
三星是否有一個公共API允許應用程序發布數字用作徽章,我不能說。 這可能是他們與少數公司私下做的事情。
歡迎您提供在Android主屏幕上查看這些徽章的證據,例如Nexus系列設備之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.