葡京娱乐总站平台Badge分析&如何逼死天秤座

“随笔与传说技法”读写操练六课谈

Badge分析

所谓Badge,原本是iOS上的一个效应,但是被Android抄的多了,也就成了Android的标配。图就不上了,大家都懂的。

运用icon彰显角标实际上是在Launcher中实现的,其实不管是角标仍旧别的对急迅情势的增删改查,都是急需Launcher辅助的,应用在增加和删除改查急速方式和安装、卸载时,都会时有爆发相应的播报,通过那个广播,Launcher会对火速形式实行修改。

很庆幸,Android原生ROM的Launcher并不抱有给icon添加角标的功力,因为Android的统筹思想是把具备新闻大旨都停放在Notification公告栏中,唯有iOS那种布告栏半残废的,才会选取角标。那玩意儿,令人格障碍伤者,完全不可能自理,每一日陷落在拔除小红点的生活中。

很喜剧,Android的AOSP代码被国内各大ROM厂商改的不能够自理。很多被涂改的ROM都能够援救那种角标的职能,甚至是许多第一方Launcher,也提供了那种效果。其基本原理也是天下一大抄,都以监听发出的播放来展开快速格局的改动,不过,关键是绝非谷歌亲爹的帮助,全部的达成都不统一,大家温馨做协调的,没有统一的接口,导致种种碎片化卓殊严重。

现行反革命原理很明显了,关键正是要硬着头皮多的找到那些ROM、Launcher的修改icon的播音。

在踏勘该难点时,作者找到了https://github.com/leolin310148/ShortcutBadger
那几个库,很多地点参考了这些库,不过该库由于很久没有保证了,所以自个儿领到了中间收集的某个Badge的法门,并做了到家,那里对笔者表示多谢。

文 | 水青衣&焱公子

种种ROM角标分析

MIUI6&7 Badge

以下内容来自MUI开发者平台:

一 、基本介绍

壹 、暗中认可的事态

当app 向公告栏发送了一条通知(文告不带进程条并且用户能够去除的),那么桌面app
icon角标就会展示1.此时app显示的角标数是和布告栏里app发送的布告数对应的,即向通告栏发送了略微文告就会来得多少角标。

二 、通告能够定义角标数

比如 有5封未读邮件,公告栏里只会显示一条布告,可是想让角标显示5.
得以在发布告时加个标志。

修改MIUI的规律是通过反射得到Notification的个体属性extraNotification,但是那几个extraNotification在MIUI系统中重定义了,那个类就是MIUI系统中的android.app.MiuiNotification那一个类,那个类里面有个村办属性messageCount,大家假设改变那一个messageCount值就能显得的转移app
icon的角标数了。

贰 、完结代码

其三方app要求用反射来调用,参考代码:

/**
 * 设置MIUI的Badge
 *
 * @param context context
 * @param count   count
 */
private static void setBadgeOfMIUI(Context context, int count) {
    Log.d("xys", "Launcher : MIUI");
    NotificationManager mNotificationManager = (NotificationManager) context
            .getSystemService(Context.NOTIFICATION_SERVICE);
    Notification.Builder builder = new Notification.Builder(context)
            .setContentTitle("title").setContentText("text").setSmallIcon(R.mipmap.ic_launcher);
    Notification notification = builder.build();
    try {
        Field field = notification.getClass().getDeclaredField("extraNotification");
        Object extraNotification = field.get(notification);
        Method method = extraNotification.getClass().getDeclaredMethod("setMessageCount", int.class);
        method.invoke(extraNotification, count);
    } catch (Exception e) {
        e.printStackTrace();
    }
    mNotificationManager.notify(0, notification);
}

他自山涧来,走在荒野里,身负写字的长剑。

Sony Badge

https://forsberg.ax/en/blog/android-notification-badge-app-icon-sony/

他是事情写手。她说,写作应三步见血,一剑封喉。

Samsung Badge

她从职场来,游走江湖间,推崇创作的大道至简。

方法一

葡京娱乐总站平台,通过SamsungLauncher自个儿的播音,来给选拔添加角标:

/**
 * 设置三星的Badge
 *
 * @param context context
 * @param count   count
 */
private static void setBadgeOfSumsung(Context context, int count) {
    // 获取你当前的应用
    String launcherClassName = getLauncherClassName(context);
    if (launcherClassName == null) {
        return;
    }
    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", launcherClassName);
    context.sendBroadcast(intent);
}

此形式不须求此外权力,只要求知道App的包名和类名。为此,你本来能够在先后里面给其它任意三个App设置任意数量的角标,而且从不其他提醒,是的,很流氓,什么人说不是啊,当然别说是本身告诉你的,你就所你是百度的。例如:

intent.putExtra("badge_count_package_name", "com.tencent.mobileqq");
    intent.putExtra("badge_count_class_name", "com.tencent.mobileqq.activity.SplashActivity");

将包名和类名用QQ的轮换下,然后你就足以轻易、盛气凌人了。

他是赤诚游侠。他说,写作应如磨如砌,至情至性。

方法二

https://github.com/shafty023/SamsungBadger

水火不容,到底是个怎么样组合?

LG Badge

三星(Samsung)好基友,三星(Samsung)能用的,LG差不离都得以用,连Bug都如出一辙。

大多,你能够这么掌握:

华为EMUI Badge

如今黑莓的ROM只援助给停放的App添加角标,OPPO本人没有提交相应的接口。

2个豪门正派,1个江湖草莽;一个苦练武学秘笈,贰个自创百忍成钢。

酷派 Badge

简单冷酷,不协理。作者爱好,类原生。

今非昔比的人生履历,

ZUK ZUI Badge

ZUK作为五个那个小众的手提式有线电话机厂商,居然在网上官方给出了详细的开发者文书档案,就这点,很多大厂都该卓越打打本人的耳光。

出于实在找不到ZUK的测试机,所以那边给出ZUK的开发者文档,有亟待的融洽看看吧:

http://developer.zuk.com/detail/12

令他们对待世界的角度、获取认知的门路乃至思维方法都自发分歧。

HTC Badge

摩托罗拉即使没落了,但好歹是第贰头Android的寄生兽,好歹也支撑下。

Intent intentNotification = new Intent("com.htc.launcher.action.SET_NOTIFICATION");
ComponentName localComponentName = new ComponentName(context.getPackageName(),
        AppInfoUtil.getLauncherClassName(context));
intentNotification.putExtra("com.htc.launcher.extra.COMPONENT", localComponentName.flattenToShortString());
intentNotification.putExtra("com.htc.launcher.extra.COUNT", count);
context.sendBroadcast(intentNotification);

Intent intentShortcut = new Intent("com.htc.launcher.action.UPDATE_SHORTCUT");
intentShortcut.putExtra("packagename", context.getPackageName());
intentShortcut.putExtra("count", count);
context.sendBroadcast(intentShortcut);

其规律同样是采纳广播,不解释了。

——但结尾,殊途同归。

锤子

锤子很遗憾,使用的是原生Launcher进行的改动,唯有System
App具有得到角标的权能。

诸如此类怪诞的咬合,在编写一途,必定会催化出奇特的赛璐珞反应。

Nova Badge

Nova是一款十分赞的Launcher,作为第3方Launcher,它的使用率分外高(当然是在国外)。该Launcher作为产业界良心,提供了content
provider供外界调用。与ZUK手提式有线电话机一样,良心大大的好,代码如下:

ContentValues contentValues = new ContentValues();
contentValues.put("tag", context.getPackageName() + "/" +
        AppInfoUtil.getLauncherClassName(context));
contentValues.put("count", count);
context.getContentResolver().insert(Uri.parse("content://com.teslacoilsw.notifier/unread_count"),
        contentValues);

教育工笔者介绍

局地有意思的

在领略了一些ROM的变化角标的法则,大家能够做一些幽默的东西。前边在说LGSamsungSony的ROM的时候,已经涉嫌了,广播只需求后人包名和起步Activity名就足以给自由一个icon添加角标,因而。。。直接看代码吧:

/**
 * Bug利用测试,请勿滥用
 *
 * @param view view
 */
public void madMode(View view) {
    madMode(99);
}

/**
 * 清除Bug角标
 *
 * @param view view
 */
public void cleanMadMode(View view) {
    madMode(0);
}

/**
 * 获取所有App的包名和启动类名
 *
 * @param count count
 */
private void madMode(int count) {
    Intent intent = new Intent(Intent.ACTION_MAIN, null);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);
    List<ResolveInfo> list = getPackageManager().queryIntentActivities(
            intent, PackageManager.GET_ACTIVITIES);
    for (int i = 0; i < list.size(); i++) {
        ActivityInfo activityInfo = list.get(i).activityInfo;
        String activityName = activityInfo.name;
        String packageName = activityInfo.applicationInfo.packageName;
        BadgeUtil.setBadgeOfMadMode(getApplicationContext(), count, packageName, activityName);
    }
}

10分简单的代码,就是通过PM找出全部运营Intent的Activity,再取出其包名,通过设置来添加角标。效果如图:

device-2015-12-07-141255.png

device-2015-12-07-141314.png

device-2015-12-07-141337.png

OK,丧心病狂,逼死性冷淡双子座。

请勿滥用,因而滋生的满贯难点,不要找笔者

请不要提桌面背景!!!

水青衣:简书官方专题【艺术学】、【今夜日记】主编;简书特约访谈官;简书首任经院省长;中夏族民共和国周豫才教院鲁民作家班29期学员;职业写手、资深文化制片人,多年纸媒专栏作家。简书文章:《为何拒绝小编的干扰》《专访小编:一鸣丨亲切的知识分子,你要爱您的孤寂》

Github

遗忘发地址了
https://github.com/xuyisheng/ShortcutHelper

焱公子:简书签订契约作者,官方专题【奇思妙想】副主要编辑;新浪千万阅读量小编。曾有多篇作品被“大豆熟了”等两个百万观众级中号转发,多年500强职场经历。擅写轶事的跨界暖男。简书小说:《七世诅咒》《死于37虚岁》

终生,爬过一千座山,跟爬过一两座山,方式与境界是截然不同的。

创作,亦是如此。

30天,6堂课,大家尚无办法让您一日千里,行遍千山。

但上学,直接经验首要,直接经验更要紧。

故而,大家能给你的,是——

随即焱公子见大行远,领略风景;跟着水姑娘沉稳内心,沉默练剑。

对于“写作”那件事,我们严俊,又死磕。

由此,你若来,要想好:那是一程“道与术同修”的修心炼剑之旅,

听课简单,自律不易。

您要拿出的,不仅仅是交钱参预的时代热情,

还应该有执衷如初的爱护与百折不挠如磐的信心。

二11日,扎营登山,跟着小编俩,

步步向上,铁血登上顶峰。若不攻取,绝不回头。

登分裂的山,有两样的攻略

在你供给出发,制伏名山大川前,大家会一向,陪你。

陪你共同,打开登山的攻略。

进入训练营,你将取得的作品锦囊——

一种沉思

——讲述三个动人心魄的好旧事的盘算逻辑

三种经验

——自媒体平台玩转经验

——古板纸媒投稿经验

二种技法

——小说+遗闻的分化技法

——点评+修改传说的奥妙

——读+写的三昧

本磨练营适宜人群

传说、随笔创作爱好者

转业于玩转自媒体写作的人工新生儿窒息

意在大约率提高纸媒投稿通过率的人工产后虚脱

爱惜水姑娘和焱公子的随机一族

作文,一向都以亟需密切打磨的手工业活。

撰写,是1个由外行到熟知到精进的进度。

心存敬畏,方能技法圆熟。

窍门圆熟,方能经验行文。

文艺即人学,

对创作与办事,大家是铁血的舵主,是死磕到底的领跑者;

对成人与做人,大家是温柔的主将,是换来灵魂的私人。

您将学会的,不仅仅是进步登山,

还将学会怎么样去分析一座山,快捷找到最相宜本身的登山攻略。

我们希望,你认真而努力,不负初心。

那正是说,无论你遇见任何难题,

大家会直接参预,倾听你的质疑,修正你的每一招出剑姿势。

剑指江湖,喜悦登山。

以下,将会是你们境遇的三个帮主“水火不容”的常态:

——焱公子会教你那样写传说

——到了水姑娘手上,她会教你怎么样把典故转化为小说

授行业内部容

授课情势与价格

价格:169元:(听课+作业+点评+修订)

一 、进入社群,按时收听课程内容。

课后,提交听课感悟卡,并交给一篇作业。

此次课程须要:提交5篇感悟卡+4篇作业。

老师会发布优材料悟卡,并对每一篇作业写出点评意见。

2.可每天在社会群众体育内咨询,获得导师解答。

报名时间与艺术

申请时间

登时起,到专业开始拍录前均可报名

申请方法

寻找关心微信公众号简书大学堂(jianshuit),后台回复“水火不容”,即可取得课程订阅链接~

累加班长微信:xingxingyuemei,凭借购买截图记录进入交换群。