如何逼死处女座,逻辑逼死处女座

Badge分析

所谓Badge,原来是iOS上的八个职能,不过被Android抄的多了,也就成了Android的标配。图就不上了,我们都懂的。

选取icon突显角标实际上是在Launcher中贯彻的,其实无论是是角标依旧别的对连忙情势的增加和删除改查,都以必要Launcher扶助的,应用在增加和删除改查急忙方式和装置、卸载时,都会发出相应的播报,通过那个广播,Launcher会对神速方式实行修改。

很庆幸,Android原生ROM的Launcher并不富有给icon加多角标的职能,因为Android的希图观念是把具有音信主旨都放置在Notification布告栏中,独有iOS这种通告栏半残废的,才会动用角标。这玩意儿,让性冷淡病者,完全不可能自理,天天陷落在化解小红点的生活中。

很正剧,Android的AOSP代码被国内各大ROM厂家改的不可能自理。比较多被涂改的ROM都能够支撑这种角标的成效,以至是成都百货上千第三方Launcher,也提供了这种成效。其基本原理也是大地第一次全国代表大会抄,都是监听发出的广播来开展快捷方式的改造,可是,关键是尚未Google亲爹的支撑,全部的落到实处都不联合,大家温馨做协调的,未有统一的接口,导致各样碎片化十分的悲惨。

于今原理很清晰了,关键正是要尽或者多的找到这几个ROM、Launcher的改造icon的播报。

在踏勘该难题时,笔者找到了https://github.com/leolin310148/ShortcutBadger 那一个库,比很多地点参考了那几个库,可是该库由于比较久未有保险了,所以作者领到了在那之中搜罗的片段Badge的措施,并做了一揽子,这里对我表示感激。

其间有创新意识的正是构图了啊,不过时而圆时而方时而满屏,不太懂。范冰冰(Fan Bingbing)的中文有的时候候会出溜出来,演技比王昭君,武曌之类的重重,范冰御姐士别的以演技著称的名片举例苹果罗浮山没看过。传说剧情是太慢了,中间有三次转变,贰遍是省长厅长省长都撤掉了他还告了十年,另贰回是她决定不去了的时候都觉着,???因为这么些转折转的实际是大弧线,让人很懵逼很出戏。大概发行人便是想让大家以局旁人的意见去看这么些传说啊。关于产后出血孩子的转速,作者在想到底是实在,还是李雪莲为了自己欣尉幻想出来的呀。最终,作为二个射手座,表示李雪莲的逻辑快把本身逼疯了,本来就没判错,泼妇刁民啊,为何平素能告状!!?咋大概直接告状???

各个ROM角标解析

MIUI6&7 Badge

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

一、基本介绍

1、暗中认可的事态

当app 向通知栏发送了一条文告(通告不带进度条并且客户能够去除的),那么桌面app icon角标就能够展现1.此时app呈现的角标数是和文告栏里app发送的文告数对应的,即向布告栏发送了有一点文告就能够显得多少角标。

2、公告能够定义角标数

比方 有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

方法一

通过三星(Samsung)Launcher自个儿的播音,来给使用增多角标:

/**
 * 设置三星的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增加角标,红米本人没有付诸相应的接口。

酷派 Badge

简单易行凶残,不扶助。作者欣赏,类原生。

ZUK ZUI Badge

ZUK作为叁个非常的小众的无绳电话机厂家,居然在网络官方给出了详尽的开荒者文档,就这点,相当多大厂都该好好打打自个儿的耳光。

出于实在找不到ZUK的测验机,所以这里给出ZUK的开荒者文档,有亟待的友善看看吧:

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

HTC Badge

One plus即便没落了,但好歹是第三头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,作为第三方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);
    }
}

很轻便的代码,正是通过PM搜索具有运行Intent的Activity,再抽取其包名,通过安装来增添角标。效果如图:

device-2015-12-07-141255.png

device-2015-12-07-141314.png

device-2015-12-07-141337.png

OK,病狂丧心,逼死性心理障碍射手座。

请勿滥用,因而引起的整个难题,不要找笔者

请不要提桌面背景!!!

Github

记不清发地址了
https://github.com/xuyisheng/ShortcutHelper

本文由明仕msyz手机版发布于宠物-蜂鸟摄影论坛,转载请注明出处:如何逼死处女座,逻辑逼死处女座

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。