簡體   English   中英

Facebook如何在Android中的應用程序圖標上添加徽章編號?

[英]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

ShortcutBadger

在此輸入圖像描述

添加:

int badgeCount = 1;
ShortcutBadger.applyCount(context, badgeCount);  

去掉 :

ShortcutBadger.applyCount(context, 0);

我已經弄清楚如何為索尼設備做到這一點。

我在這里寫了博客。 我也張貼了關於這一個單獨的SO問題在這里


Sony設備使用名為BadgeReciever的類。

  1. 在清單文件中聲明com.sonyericsson.home.permission.BROADCAST_BADGE權限:

  2. 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); 
  3. 完成。 廣播此Intent ,啟動器應在您的應用程序圖標上顯示徽章。

  4. 要再次刪除徽章,只需發送一個新廣播,這次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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM