记录下这个需求的研究 写的超级随意 大家凑合看 不懂再问 一起探讨
因为我们的产品也需要有即时通讯了 消息更新不可避免
首先 要实现这个功能 当然是要借助系统的Launcher。
而谷歌并没有开放出这个标准的接口或者方法
于是各大厂商都对Launcher这块做了各自的改动,这也给第三方开发者想要统一处理这个需求加大了难度。
网上demo也有一些 大部分是通过发送广播的方式,来通知系统更新图标上的数字
比如我之前在github上找到一个demoTestShortCut 就很不错, 针对三星(亲测)、索尼、小米 小米貌似在miui系统里已经内部处理了这种情况 发通知栏消息的时候 会自动加数字
/***
* 三星手机:应用图标的快捷方式上加数字
* @param context
* @param num
*/
public static void samsungShortCut(Context context, String num)
{
int numInt = Integer.valueOf(num);
if (numInt < 1)
{
num = "0";
}else if (numInt > 99){
num = "99";
}
String activityName = getLaunchActivityName(context);
Intent localIntent = new Intent("android.intent.action.BADGE_COUNT_UPDATE");
localIntent.putExtra("badge_count", Integer.parseInt(num));
localIntent.putExtra("badge_count_package_name", context.getPackageName());
localIntent.putExtra("badge_count_class_name", activityName);
context.sendBroadcast(localIntent);
}
/***
* 索尼手机:应用图标的快捷方式上加数字
* @param context
* @param num
*/
public static void sonyShortCut(Context context, String num)
{
String activityName = getLaunchActivityName(context);
if (activityName == null){
return;
}
Intent localIntent = new Intent();
int numInt = Integer.valueOf(num);
boolean isShow = true;
if (numInt < 1){
num = "";
isShow = false;
}else if (numInt > 99){
num = "99";
}
localIntent.put