Ace Cleaner v1.0.0.2 保活与拉活反编译代码册
Ace Cleaner v1.0.0.2 保活与拉活反编译代码册返回竞品库
报告口径本页直接渲染本地报告真源;静态能力、动态观察、推断和线上未验证项不得互相替代。

宽表格和代码可左右滑动查看。

Ace Cleaner v1.0.0.2 保活与拉活反编译代码册#

精确包名:com.ke.ace.cleaner;样本及资料日期:2026-10-28,Asia/Shanghai(北京时间)。六专题补充版。

S1=当前APK静态直接证据;S2=工具回读;S3=当前真机观察;I=推断;U=未验证。反编译不是原始源码,内置配置不是线上最终配置。发布状态单独记录于批次入口。

机制总图#

Boot/覆盖安装/Alarm/周期Work → 恢复辅助器(含audit门禁) → 常驻19001;临时FGS19002在特定恢复路径使用并15秒后停止。Job1419与7000分别有不同延迟/来源,不是一个统一精确周期。

通知点击是另一条回流链:Mernten处理原通知 → finishAffinity → 延迟200ms启动Appnsio并保留extras → 主页处理notify_action_id → 功能分发/权限 → 工具页。系统强停与普通任务移除边界按真机矩阵表达。

按执行顺序读主链#

阶段 入口/下游 条件与状态说明 证据
通知点击 Mernten → 200ms → Appnsio(extras) → 主页 中转埋点/消除原通知/功能跳转分层 N2/N3
权限分发 functionId → nHMNH → 特殊访问/媒体权限 → 工具 不同功能的权限门禁不统一 N1
日期状态 TimeZone本地午夜 → 每ID/全局日键 换键取默认;不是UTC或滚动24小时 N4/N5
配额配置 Pair.first/second → 工厂字段 → 展示门禁 默认5/900不能单独等同生产每日策略 N6/原A10/A11
恢复主链 Boot/Job/Alarm/Work → audit → FGS 尝试链路与Samsung实际存活分开 原A3–A9

调用关系与业务含义#

本包44个业务Activity的标签和路由已独立建立索引。它除垃圾/大文件/应用/病毒外,还包括媒体管理、相似照片、重复文件、照片隐私、压缩、通知管理、权限管理、安全浏览器、网络诊断、扬声器和存储相关工具。

这次进一步追到统一功能分发器nHMNH.NnMHn:功能2大文件、7重复文件、9照片隐私、10视频压缩、18图片压缩分别经过文件权限路径;功能5相似照片走READ_MEDIA_IMAGES;功能13/14/15进入不同媒体Activity;16/17分别把WhatsApp/Telegram包名传给统一清理页。静态支持Telegram路由不等于主页当前展示该入口。[N1]

通知actionId与产品functionId应在同一分发器对应,不能用通知ID100000+类型直接当目标Activity编号。

本轮闭合“每日”口径:每ID剩余额度键是date_count_new_ + ID + 本地午夜时间戳;全局计数也带同一个本地日后缀。nHHNn.MMMHN按当前TimeZone偏移求本地午夜,不是UTC自然日,也不是距安装滚动24小时。[N4/N5]

因此跨日是换存储键读取默认配额,不需要假设有午夜定时任务清零。每ID剩余数、全局已展示数、上次通知时间和上次主页通知ID是不同状态;Pair(5,900)经MHNn代理读取,工厂把first和second送到额度/间隔字段。具体来源豁免继续按展示函数检查,不能将FCM的单类豁免外推为免全局上限。[N4/N6]

模板工厂有不同候选池:100060–100084等和100007起的普通候选可指向同一功能但有不同来源与正文。下表补齐局部List变量引用的候选文案,避免只保留R.string键。

控制流复核与广告调度边界#

本轮产品路径已能区分页面跳转与通知回流。MerntenActivity处理点击埋点/通知清理,200ms后把原Intent extras带入AppnsioActivity;之后还经启动/主页面处理notify_action_id,不是点击后立刻直接清理。[N2/N3]

已有GMA展示证据不覆盖所有工具。若文件权限未通过,大文件/压缩等结果页商业化无法据首启推断。源码中多提供方、缓存与回退字段要按实际调用分别核验;本轮不将24小时广告缓存判断误作每日展示频控。

代码保留混淆名与工具错误标记。A编号沿用已核证据,N编号为本轮新增回查;simple输出是独立指令阅读副本,不能用文件存在/退出码0替代方法语义核验。

原有代码锚点 A#

编号 证明内容 本地源位置 核验
A1 Referrer成功保存 jadx/sources/nMMHH/nHHN.java:193–208 已回读
A2 Referrer组合、Adjust来源变化 jadx/sources/nMMHH/nHHN.java:426–530 已回读
A3 前台/恢复与audit门禁 jadx/sources/nNnHM/NMMMM.java:307–346 已回读
A4 常驻布局和importance jadx/sources/NNNHM/nHNM.java:45–101 已回读
A5 开机/覆盖安装入口 jadx/sources/com/acetool/antivirus/notify/service/UserBootReceiver.java:32–55 已回读
A6 Job1419/7000和恢复 jadx/sources/com/acetool/antivirus/notify/service/UserBootJobService.java:106–178 已回读
A7 临时FGS19002与15秒停止 jadx/sources/com/acetool/antivirus/notify/service/TemporaryKeepAliveService.java:80–125 已回读
A8 Alarm1419和15分钟回退 jadx/sources/nHHN/NMnnN.java:36–74 已回读
A9 15分钟周期Work jadx/sources/MMMHH/HNM.java:75–100 已回读
A10 业务通知展示门禁 jadx/sources/NNNHM/nHMMn.java:621–701 已回读
A11 每类配额/间隔回退 jadx/sources/nnHnn/nHMN.java:25–68 已回读
A12 业务通知ID与点击参数 jadx/sources/NHHMn/NNNNn.java:876–904 已回读

本轮补充代码锚点 N#

编号 证明内容 本地源位置 核验
N1 功能编号、目标页面及权限分发 jadx/sources/NNNHM/nHMNH.java:280–383 已回读
N2 通知点击200ms中转与extras保留 jadx/sources/discmil/humcrap/coulatio/teasehica/capminat/attgitud/MerntenActivity.java:49–114 已回读
N3 主页读取actionId交给功能处理 jadx/sources/discmil/humcrap/coulatio/teasehica/capminat/restrfec/FavshioActivity.java:144–149 已回读
N4 每ID/全局日计数及最后时间存储 jadx/sources/MNHHH/NMnnN.java:36–97 已回读
N5 按TimeZone偏移计算本地午夜 jadx/sources/nHHNn/MMMHN.java:12–16 已回读
N6 Pair配置读取代理 jadx/sources/NNNHM/MHNn.java:54–56 已回读
N7 不同候选池、动作与候选文案注册 jadx/sources/NHHMn/NNNNn.java:753–811 已回读
N8 主页/FCM时间先写回,再安排异步通知构建 jadx/sources/NNNHM/nHMMn.java:718–740 已回读

便于开发阅读的等价逻辑#

以下使用语义名称重述已核对控制流,不是竞品原始源码;它与A/N原位置配合阅读。尚未闭合的下游保留抽象调用,不填造执行结果。

localDay = floor((nowMillis + timezoneOffset) / DAY) * DAY - timezoneOffset
remainingKey = "date_count_new_" + notificationId + localDay
remaining = readInt(remainingKey, configuredQuota)
if (!permission || audit) return false
if (configuredQuota <= 0 && from != "4") return false
if (remaining <= 0 && from != "4") return false
if (globalCap > 0 && globalShown >= globalCap) return false
checkHomeOrFcmIntervalBySeconds()
checkCanSendForRelevantSources()
writeLastHomeOrFcmTimeBeforeScheduling()
scheduleAsyncBuildAndNotify()
return true  // 只表示进入异步链,不能替代系统展示成功证据

onNotificationClick -> MerntenActivity
  -> recordClickAndCancelOriginalExceptExcludedSource
  -> delay(200ms) -> AppnsioActivity.putExtras(originalIntent)
  -> mainReadsActionId -> functionPermissionRouter -> tool

一方后台与通知关键实现#

A1 · Referrer成功保存#

位置:nMMHH/nHHN.java:193–208。下列为这个范围的反编译阅读片段;复杂方法的其余部分仍须回到源文件,不能把片段称为完整原始源码。

                if (((Number) obj).intValue() == 0) {
                    String installReferrer = installReferrerClient.getInstallReferrer().getInstallReferrer();
                    HNMNN hnmnn = HNMNN.f15897NMnnN;
                    NNHMN.NMnnH nMnnH = NNHMN.NMnnH.f5042NMnnN;
                    if (!Intrinsics.areEqual(hnmnn.HNH(nMnnH.NMNnM(), ""), installReferrer)) {
                        nHHN.f14854NMnnN.HMHHM(22423665, new Pair[0]);
                    }
                    MMMHH.MMMHH.f2469NMnnN.HNH("InstallReferrer", "Referrer received");
                    String strNMNnM = nMnnH.NMNnM();
                    Intrinsics.checkNotNull(installReferrer);
                    hnmnn.HMn(strNMNnM, installReferrer);
                    nHHN.f14854NMnnN.MHHMN(installReferrer);
                }
                Result.Companion companion5 = Result.Companion;
                installReferrerClient.endConnection();
                unit = Unit.INSTANCE;

A2 · Referrer组合、Adjust来源变化#

位置:nMMHH/nHHN.java:426–530。下列为这个范围的反编译阅读片段;复杂方法的其余部分仍须回到源文件,不能把片段称为完整原始源码。

    public final void MHHMN(String str) {
        Object objM241constructorimpl;
        Intrinsics.checkNotNullParameter(str, "url");
        try {
            Result.Companion companion = Result.Companion;
            List listSplit$default = StringsKt.split$default((CharSequence) str, new String[]{"&"}, false, 0, 6, (Object) null);
            if (!listSplit$default.isEmpty()) {
                List list = listSplit$default;
                if (!(list instanceof Collection) || !list.isEmpty()) {
                    Iterator it = list.iterator();
                    while (true) {
                        if (!it.hasNext()) {
                            break;
                        }
                        if (StringsKt.contains$default((CharSequence) it.next(), (CharSequence) "utm_source=apps.facebook.com", false, 2, (Object) null)) {
                            List list2 = listSplit$default;
                            if (!(list2 instanceof Collection) || !list2.isEmpty()) {
                                Iterator it2 = list2.iterator();
                                while (true) {
                                    if (!it2.hasNext()) {
                                        break;
                                    }
                                    if (StringsKt.contains$default((CharSequence) it2.next(), (CharSequence) "utm_campaign=", false, 2, (Object) null)) {
                                        List list3 = listSplit$default;
                                        if (!(list3 instanceof Collection) || !list3.isEmpty()) {
                                            Iterator it3 = list3.iterator();
                                            while (it3.hasNext()) {
                                                if (StringsKt.contains$default((CharSequence) it3.next(), (CharSequence) "utm_content=", false, 2, (Object) null)) {
                                                    if (MMMHH.HNM.f2466NMnnN.HNMNM() != 2) {
                                                        HNMNH.f15894NMnnN.nHMHM();
                                                        HMHHM(56449605, new Pair[0]);
                                                        HMHHM(56450160, new Pair[0]);
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                List list4 = listSplit$default;
                if (!(list4 instanceof Collection) || !list4.isEmpty()) {
                    Iterator it4 = list4.iterator();
                    while (true) {
                        if (!it4.hasNext()) {
                            break;
                        }
                        if (StringsKt.contains$default((CharSequence) it4.next(), (CharSequence) "gclid=", false, 2, (Object) null)) {
                            List list5 = listSplit$default;
                            if (!(list5 instanceof Collection) || !list5.isEmpty()) {
                                Iterator it5 = list5.iterator();
                                while (true) {
                                    if (!it5.hasNext()) {
                                        break;
                                    }
                                    if (StringsKt.contains$default((CharSequence) it5.next(), (CharSequence) "gad_source=", false, 2, (Object) null)) {
                                        if (MMMHH.HNM.f2466NMnnN.HNMNM() != 2) {
                                            HNMNH.f15894NMnnN.nHMHM();
                                            HMHHM(56449605, new Pair[0]);
                                            HMHHM(56450160, new Pair[0]);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            objM241constructorimpl = Result.m241constructorimpl(Unit.INSTANCE);
        } catch (Throwable th) {
            Result.Companion companion2 = Result.Companion;
            objM241constructorimpl = Result.m241constructorimpl(ResultKt.createFailure(th));
        }
        Throwable thM244exceptionOrNullimpl = Result.m244exceptionOrNullimpl(objM241constructorimpl);
        if (thM244exceptionOrNullimpl != null) {
            thM244exceptionOrNullimpl.printStackTrace();
        }
    }

    public final void MMMHH(Function0 function0) {
        Intrinsics.checkNotNullParameter(function0, "listener");
        List list = f14853NMnnM;
        if (list.contains(function0)) {
            return;
        }
        list.add(function0);
    }

    public final String MMMHM() {
        return MMMHH.HNM.f2466NMnnN.nHMHM().HMn();
    }

    public final void MMMHN(AdjustAttribution adjustAttribution) {
        Intrinsics.checkNotNullParameter(adjustAttribution, "attribution");
        String str = adjustAttribution.network;
        Intrinsics.checkNotNullExpressionValue(str, "network");
        if (str.length() > 0) {
            String str2 = adjustAttribution.campaign;
            Intrinsics.checkNotNullExpressionValue(str2, "campaign");
            if (str2.length() > 0 && MMMHH.HNM.f2466NMnnN.HNMNM() != 2) {
                HNMNH.f15894NMnnN.nHMHM();
                HMHHM(56449050, new Pair[0]);
                HMHHM(56450160, new Pair[0]);

A3 · 前台/恢复与audit门禁#

位置:nNnHM/NMMMM.java:307–346。下列为这个范围的反编译阅读片段;复杂方法的其余部分仍须回到源文件,不能把片段称为完整原始源码。

    public final boolean MHMH() {
        if (f15455HMn > 0) {
            MMMHN.NMnnN nMnnN = f15460NMnnM;
            if (!(nMnnN != null ? nMnnN.MMMHN() : false)) {
                return true;
            }
        }
        return false;
    }

    public final int MHMM() {
        HNM hnm = f15457HNM;
        if (hnm != null) {
            return hnm.MMMHH();
        }
        return 0;
    }

    public final boolean MMMHH() {
        boolean zHMHHn = HMHHn();
        boolean z = !zHMHHn;
        M("BootNotification", "check keep alive job audit=" + zHMHHn + " canRun=" + z);
        return z;
    }

    public final void MMMHM(String str, String str2) {
        Intrinsics.checkNotNullParameter(str, "tag");
        Intrinsics.checkNotNullParameter(str2, "msg");
        NMnnM nMnnM = f15456HNH;
        if (nMnnM != null) {
            nMnnM.NMnnN(str, str2);
        }
    }

    public final boolean MMMHN() {
        boolean zHMHHn = HMHHn();
        boolean zNNHNM = nNHNM();
        boolean z = zNNHNM && !zHMHHn;
        M("BootNotification", "check foreground recovery serviceOpen=" + zNNHNM + " audit=" + zHMHHn + " canTrigger=" + z);
        return z;

A4 · 常驻布局和importance#

位置:NNNHM/nHNM.java:45–101。下列为这个范围的反编译阅读片段;复杂方法的其余部分仍须回到源文件,不能把片段称为完整原始源码。

    public final Notification HNH(String str, boolean z, RemoteViews remoteViews, RemoteViews remoteViews2) {
        Application applicationNnMHn;
        NMMMM nmmmm = NMMMM.f15461NMnnN;
        Notification.Builder builder = new Notification.Builder(nmmmm.NnMHn(), str);
        if (nmmmm.NNnHH() != 0) {
            builder.setSmallIcon(nmmmm.NNnHH());
        }
        if (nmmmm.NNNHn() != 0 && (applicationNnMHn = nmmmm.NnMHn()) != null) {
            builder.setColor(ContextCompat.getColor(applicationNnMHn, nmmmm.NNNHn()));
        }
        builder.setShowWhen(true);
        builder.setWhen(System.currentTimeMillis());
        builder.setVisibility(1);
        builder.setCustomContentView(remoteViews);
        builder.setContent(remoteViews);
        builder.setCustomBigContentView(remoteViews2);
        builder.setStyle(new Notification.DecoratedCustomViewStyle());
        builder.setOnlyAlertOnce(true);
        builder.setOngoing(true);
        builder.setGroup(nmmmm.HNMNn());
        if (nmmmm.N()) {
            if (nmmmm.NnMHn() != null) {
                builder.setContentTitle("Notification");
                builder.setContentText("News");
            }
            builder.setNumber(1);
        }
        Notification notificationBuild = builder.build();
        Intrinsics.checkNotNullExpressionValue(notificationBuild, "build(...)");
        return notificationBuild;
    }

    public final void HNM() {
        RemoteViews remoteViews;
        NMMMM nmmmm = NMMMM.f15461NMnnN;
        Application applicationNnMHn = nmmmm.NnMHn();
        if (applicationNnMHn != null) {
            boolean zHNN = nmmmm.HNN();
            String strNMNnN = nmmmm.NMNnN();
            Context contextNMnnN = NMMMH.f15454NMnnN.NMnnN(applicationNnMHn);
            String packageName = applicationNnMHn.getPackageName();
            RemoteViews remoteViews2 = new RemoteViews(packageName, nmmmm.NNNHH());
            nmmmm.NNNHM(contextNMnnN, remoteViews2);
            int iMHMM = nmmmm.MHMM();
            if (iMHMM != 0) {
                remoteViews = new RemoteViews(packageName, iMHMM);
                nmmmm.NNNHN(contextNMnnN, remoteViews);
            } else {
                remoteViews = remoteViews2;
            }
            NotificationManager notificationManagerMHHMN = nmmmm.MHHMN();
            if (notificationManagerMHHMN != null) {
                NotificationChannel notificationChannel = new NotificationChannel(strNMNnN, nmmmm.HNMNn(), zHNN ? 5 : 2);
                notificationChannel.setShowBadge(true);
                notificationManagerMHHMN.createNotificationChannel(notificationChannel);
            }
            f15529NMnnM = f15530NMnnN.HNH(strNMNnN, zHNN, remoteViews2, remoteViews);

A5 · 开机/覆盖安装入口#

位置:com/acetool/antivirus/notify/service/UserBootReceiver.java:32–55。下列为这个范围的反编译阅读片段;复杂方法的其余部分仍须回到源文件,不能把片段称为完整原始源码。

        }
    }

    @Override // android.content.BroadcastReceiver
    public void onReceive(Context context, Intent intent) {
        Intrinsics.checkNotNullParameter(context, "context");
        String action = intent != null ? intent.getAction() : null;
        MMMHH mmmhh = MMMHH.f2469NMnnN;
        String str = f6950NMnnM;
        mmmhh.HNH(str, "onReceive action=" + action);
        try {
            if (Intrinsics.areEqual(action, "android.intent.action.BOOT_COMPLETED")) {
                UserBootJobService.f6945HNH.NMnnN(context, "boot");
                mmmhh.HNH(str, "schedule UserBootJobService requested source=boot");
            } else if (Intrinsics.areEqual(action, "android.intent.action.MY_PACKAGE_REPLACED")) {
                UserBootJobService.f6945HNH.NMnnM(context, "package_replaced");
                mmmhh.HNH(str, "schedule UserBootJobService requested source=package_replaced");
            } else {
                mmmhh.HNH(str, "ignore action=" + action);
            }
        } catch (Throwable th) {
            MMMHH.f2469NMnnN.NMnnM(f6950NMnnM, "schedule UserBootJobService failed: " + th.getMessage());
        }
    }

A6 · Job1419/7000和恢复#

位置:com/acetool/antivirus/notify/service/UserBootJobService.java:106–178。下列为这个范围的反编译阅读片段;复杂方法的其余部分仍须回到源文件,不能把片段称为完整原始源码。

        public final void NMnnM(Context context, String str) {
            Intrinsics.checkNotNullParameter(context, "context");
            Intrinsics.checkNotNullParameter(str, "source");
            Context applicationContext = context.getApplicationContext();
            long jCurrentTimeMillis = System.currentTimeMillis();
            SharedPreferences sharedPreferences = applicationContext.getSharedPreferences("user_boot_keep_alive", 0);
            if (jCurrentTimeMillis - sharedPreferences.getLong("last_fast_scheduled_at", 0L) >= WorkRequest.DEFAULT_BACKOFF_DELAY_MILLIS) {
                Intrinsics.checkNotNull(applicationContext);
                if (HNH(applicationContext, 7000, 5000L, 10000L, false, str)) {
                    sharedPreferences.edit().putLong("last_fast_scheduled_at", jCurrentTimeMillis).apply();
                    return;
                }
                return;
            }
            MMMHH.f2469NMnnN.HNH("UserBootJobService", "schedule fast skipped source=" + str + " cooldown");
        }

        public final void NMnnN(Context context, String str) {
            Intrinsics.checkNotNullParameter(context, "context");
            Intrinsics.checkNotNullParameter(str, "source");
            HNH(context, 1419, 0L, 0L, true, str);
        }

        public NMnnN() {
        }
    }

    public static final void NMnnM(UserBootJobService userBootJobService, JobParameters jobParameters) {
        userBootJobService.f6948NMnnM.remove(Integer.valueOf(jobParameters.getJobId()));
        userBootJobService.jobFinished(jobParameters, false);
        MMMHH.f2469NMnnN.HNH(f6944HMn, "onStartJob finished");
    }

    @Override // android.app.Service
    public void onDestroy() {
        Collection collectionValues = this.f6948NMnnM.values();
        Handler handler = this.f6949NMnnN;
        Iterator it = collectionValues.iterator();
        while (it.hasNext()) {
            handler.removeCallbacks((Runnable) it.next());
        }
        this.f6948NMnnM.clear();
        super.onDestroy();
    }

    @Override // android.app.job.JobService
    public boolean onStartJob(final JobParameters jobParameters) {
        Intrinsics.checkNotNullParameter(jobParameters, "params");
        boolean z = jobParameters.getJobId() == 7000;
        if (jobParameters.getJobId() != 1419 && !z) {
            MMMHH.f2469NMnnN.HNH(f6944HMn, "onStartJob ignore unknown jobId=" + jobParameters.getJobId());
            jobFinished(jobParameters, false);
            return false;
        }
        MMMHH mmmhh = MMMHH.f2469NMnnN;
        String str = f6944HMn;
        mmmhh.HNH(str, "onStartJob jobId=" + jobParameters.getJobId() + " fastRecovery=" + z);
        nHHN.NMnnN nMnnN = nHHN.NMnnN.f14011NMnnN;
        Context applicationContext = getApplicationContext();
        Intrinsics.checkNotNullExpressionValue(applicationContext, "getApplicationContext(...)");
        nMnnN.NMnnN(applicationContext);
        if (!NMMMM.f15461NMnnN.MMMHH()) {
            mmmhh.HNH(str, "onStartJob skipped by keep alive job check");
            jobFinished(jobParameters, false);
            return false;
        }
        try {
            if (z) {
                mmmhh.HNH(str, "onStartJob start temporary foreground bridge");
                com.acetool.antivirus.notify.service.NMnnN nMnnN2 = com.acetool.antivirus.notify.service.NMnnN.f6926NMnnN;
                Context applicationContext2 = getApplicationContext();
                Intrinsics.checkNotNullExpressionValue(applicationContext2, "getApplicationContext(...)");
                nMnnN2.HNH(applicationContext2);

A7 · 临时FGS19002与15秒停止#

位置:com/acetool/antivirus/notify/service/TemporaryKeepAliveService.java:80–125。下列为这个范围的反编译阅读片段;复杂方法的其余部分仍须回到源文件,不能把片段称为完整原始源码。

    public final Notification HNH() {
        String str = f6940HNM;
        NotificationChannel notificationChannel = new NotificationChannel(str, "Recovery service", 2);
        Object systemService = getSystemService("notification");
        Intrinsics.checkNotNull(systemService, "null cannot be cast to non-null type android.app.NotificationManager");
        ((NotificationManager) systemService).createNotificationChannel(notificationChannel);
        Notification notificationBuild = new NotificationCompat.Builder(this, str).setContentTitle("Service running").setSmallIcon(R.drawable.stat_notify_sync).setOngoing(false).build();
        Intrinsics.checkNotNullExpressionValue(notificationBuild, "build(...)");
        return notificationBuild;
    }

    @Override // android.app.Service
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override // android.app.Service
    public void onCreate() {
        super.onCreate();
        f6941NMnnH = true;
        try {
            int iNHMHN = Build.VERSION.SDK_INT >= 29 ? NMMMM.f15461NMnnN.nHMHN() : 0;
            ServiceCompat.startForeground(this, 19002, HNH(), iNHMHN);
            NMMMM.f15461NMnnN.M("temporaryFgTag", "startForeground success type=" + iNHMHN);
            NotificationService.NMnnM nMnnM = NotificationService.f6932NMnnM;
            Context applicationContext = getApplicationContext();
            Intrinsics.checkNotNullExpressionValue(applicationContext, "getApplicationContext(...)");
            nMnnM.HMn(applicationContext);
            Runnable runnable = new Runnable() { // from class: nHHN.NMnnM
                @Override // java.lang.Runnable
                public final void run() {
                    TemporaryKeepAliveService.HNM(this.f14006NMnnN);
                }
            };
            this.f6942NMnnM = runnable;
            this.f6943NMnnN.postDelayed(runnable, 15000L);
        } catch (Throwable th) {
            NMMMM.f15461NMnnN.MMMHM("temporaryFgTag", "startForeground failed: " + th.getClass().getSimpleName() + ": " + th.getMessage());
            stopSelf();
        }
    }

    @Override // android.app.Service
    public void onDestroy() {
        Runnable runnable = this.f6942NMnnM;
        if (runnable != null) {

A8 · Alarm1419和15分钟回退#

位置:nHHN/NMnnN.java:36–74。下列为这个范围的反编译阅读片段;复杂方法的其余部分仍须回到源文件,不能把片段称为完整原始源码。

    public final PendingIntent HNH(Context context) {
        Intent intent = new Intent(context, (Class<?>) KeepAliveAlarmReceiver.class);
        intent.setAction(f14008HNM);
        intent.setPackage(context.getPackageName());
        PendingIntent broadcast = PendingIntent.getBroadcast(context, 1419, intent, 201326592);
        Intrinsics.checkNotNullExpressionValue(broadcast, "getBroadcast(...)");
        return broadcast;
    }

    public final void HNM(Context context, long j) {
        Object systemService = context.getSystemService("alarm");
        AlarmManager alarmManager = systemService instanceof AlarmManager ? (AlarmManager) systemService : null;
        if (alarmManager == null) {
            MMMHH.f2469NMnnN.NMnnM(f14009NMnnH, "alarm schedule failed manager=null");
            return;
        }
        long jCoerceAtLeast = RangesKt.coerceAtLeast(j - System.currentTimeMillis(), 1000L);
        alarmManager.setAndAllowWhileIdle(3, SystemClock.elapsedRealtime() + jCoerceAtLeast, HNH(context));
        NMnnM(context).edit().putLong(f14007HNH, j).apply();
        MMMHH.f2469NMnnN.HNH(f14009NMnnH, "alarm scheduled delay=" + jCoerceAtLeast + "ms");
    }

    public final SharedPreferences NMnnM(Context context) {
        SharedPreferences sharedPreferences = context.getSharedPreferences(f14010NMnnM, 0);
        Intrinsics.checkNotNullExpressionValue(sharedPreferences, "getSharedPreferences(...)");
        return sharedPreferences;
    }

    public final void NMnnN(Context context) {
        Intrinsics.checkNotNullParameter(context, "context");
        Context applicationContext = context.getApplicationContext();
        long jCurrentTimeMillis = System.currentTimeMillis();
        Intrinsics.checkNotNull(applicationContext);
        long j = NMnnM(applicationContext).getLong(f14007HNH, 0L);
        if (j <= jCurrentTimeMillis || j > com.thinkup.core.common.dd.n.d + jCurrentTimeMillis) {
            j = PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS + jCurrentTimeMillis;
        }
        HNM(applicationContext, j);
    }

A9 · 15分钟周期Work#

位置:MMMHH/HNM.java:75–100。下列为这个范围的反编译阅读片段;复杂方法的其余部分仍须回到源文件,不能把片段称为完整原始源码。

    public final void MHHMH(Application application) {
        WorkManager companion = WorkManager.Companion.getInstance(application);
        StringBuilder sb = new StringBuilder();
        sb.append(application.getApplicationContext().getPackageName());
        NMnnN nMnnN = NMnnN.f2474NMnnN;
        sb.append(nMnnN.NMnnM(application));
        if (!NMnnN(sb.toString(), false)) {
            HMn(application.getApplicationContext().getPackageName() + nMnnN.NMnnM(application), true);
            Object systemService = application.getSystemService("jobscheduler");
            Intrinsics.checkNotNull(systemService, "null cannot be cast to non-null type android.app.job.JobScheduler");
            JobScheduler jobScheduler = (JobScheduler) systemService;
            List<JobInfo> allPendingJobs = jobScheduler.getAllPendingJobs();
            Intrinsics.checkNotNullExpressionValue(allPendingJobs, "getAllPendingJobs(...)");
            if (allPendingJobs.size() > 100) {
                jobScheduler.cancelAll();
            }
            companion.cancelAllWork();
            companion.pruneWork();
        }
        PeriodicWorkRequest.Builder builder = new PeriodicWorkRequest.Builder((Class<? extends ListenableWorker>) Exceciou.class, 15L, TimeUnit.MINUTES);
        String packageName = application.getApplicationContext().getPackageName();
        Intrinsics.checkNotNullExpressionValue(packageName, "getPackageName(...)");
        PeriodicWorkRequest periodicWorkRequestBuild = builder.addTag(packageName).build();
        String packageName2 = application.getApplicationContext().getPackageName();
        Intrinsics.checkNotNullExpressionValue(packageName2, "getPackageName(...)");
        companion.enqueueUniquePeriodicWork(packageName2, ExistingPeriodicWorkPolicy.KEEP, periodicWorkRequestBuild);

A10 · 业务通知展示门禁#

位置:NNNHM/nHMMn.java:621–701。下列为这个范围的反编译阅读片段;复杂方法的其余部分仍须回到源文件,不能把片段称为完整原始源码。

    public final boolean MHHMM(final HMn hMn, final String str) {
        ?? r16;
        String strValueOf;
        byte b;
        int i;
        long j;
        Intrinsics.checkNotNullParameter(hMn, "notifyBean");
        Intrinsics.checkNotNullParameter(str, "from");
        NMMMM nmmmm = NMMMM.f15461NMnnN;
        long jHNMNM = nmmmm.HNMNM();
        int iNHMHN = hMn.nHMHN() - 100000;
        if (!nmmmm.H() || nmmmm.HMHHn()) {
            nmmmm.HNMMn(f15470NMnnM, "showNotification blocked reason=no_permission_or_audit from=" + str + " notifyId=" + hMn.nHMHN() + " n_id=" + iNHMHN + " havePermission=" + nmmmm.H() + " isAudit=" + nmmmm.HMHHn());
            return false;
        }
        if (hMn.HNN() <= 0 && !Intrinsics.areEqual(str, "4")) {
            nmmmm.HNMMn(f15470NMnnM, "showNotification blocked reason=date_max_count_zero from=" + str + " notifyId=" + hMn.nHMHN() + " n_id=" + iNHMHN + " dateMaxCount=" + hMn.HNN());
            return false;
        }
        MNHHH.NMnnN nMnnN = MNHHH.NMnnN.f2925NMnnN;
        final int iNMnnN = nMnnN.NMnnN(hMn.nHMHN(), hMn.HNN());
        int iNMnnM = nMnnN.NMnnM();
        int iNMHnn = nmmmm.nMHnn();
        int iMHHMM = nmmmm.MHHMM();
        if (iNMHnn <= 0) {
            StringBuilder sb = new StringBuilder();
            r16 = 0;
            sb.append("unlimited(");
            sb.append(iNMHnn);
            sb.append(')');
            strValueOf = sb.toString();
        } else {
            r16 = 0;
            strValueOf = String.valueOf(iNMHnn);
        }
        String str2 = f15470NMnnM;
        nmmmm.HNMMn(str2, "showNotification try from=" + str + " notifyId=" + hMn.nHMHN() + " n_id=" + iNHMHN + " idRemaining=" + iNMnnN + " idDayMax=" + hMn.HNN() + " globalShown=" + iNMnnM + " globalDayMax=" + strValueOf + " normalBarMax=" + iMHHMM + HNMNM(str, jHNMNM));
        if (iNMnnN <= 0) {
            byte[] bArr = new byte[1];
            bArr[r16] = 3;
            if (!Intrinsics.areEqual(str, HMHNM.NMnnN(bArr))) {
                nmmmm.HNMMn(str2, "showNotification blocked reason=id_daily_quota_exhausted from=" + str + " notifyId=" + hMn.nHMHN() + " n_id=" + iNHMHN + " idRemaining=" + iNMnnN + " idDayMax=" + hMn.HNN());
                return r16;
            }
        }
        if (iNMHnn > 0 && iNMnnM >= iNMHnn) {
            nmmmm.HNMMn(str2, "showNotification blocked reason=global_daily_cap from=" + str + " notifyId=" + hMn.nHMHN() + " n_id=" + iNHMHN + " globalShown=" + iNMnnM + " globalDayMax=" + iNMHnn);
            return r16;
        }
        byte[] bArr2 = new byte[1];
        bArr2[r16] = 6;
        if (Intrinsics.areEqual(str, HMHNM.NMnnN(bArr2))) {
            long jNMNnH = nmmmm.NMNnH();
            if (jNMNnH > 0) {
                j = 0;
                long jHMn = nMnnN.HMn();
                b = 6;
                i = iNHMHN;
                long j2 = jHNMNM - jHMn;
                if (j2 < jNMNnH) {
                    nmmmm.HNMMn(str2, "showNotification blocked reason=home_interval from=" + str + " notifyId=" + hMn.nHMHN() + " n_id=" + i + " intervalSec=" + jNMNnH + " lastNotifyTime=" + jHMn + " now=" + jHNMNM + " elapsed=" + j2);
                    return r16;
                }
            } else {
                b = 6;
                i = iNHMHN;
                j = 0;
            }
        }
        byte[] bArr3 = new byte[1];
        bArr3[r16] = 3;
        if (Intrinsics.areEqual(str, HMHNM.NMnnN(bArr3))) {
            long jNNnHn = nmmmm.NNnHn();
            if (jNNnHn > j) {
                long jHMn2 = nMnnN.HMn();
                long j3 = jHNMNM - jHMn2;
                if (j3 < jNNnHn) {
                    nmmmm.HNMMn(str2, "showNotification blocked reason=fcm_interval from=" + str + " notifyId=" + hMn.nHMHN() + " n_id=" + i + " intervalSec=" + jNNnHn + " lastNotifyTime=" + jHMn2 + " now=" + jHNMNM + " elapsed=" + j3);
                    return r16;
                }
            }

A11 · 每类配额/间隔回退#

位置:nnHnn/nHMN.java:25–68。下列为这个范围的反编译阅读片段;复杂方法的其余部分仍须回到源文件,不能把片段称为完整原始源码。

    public final int HMn() {
        return NMnnN.f2974NMnnN.M();
    }

    public final long HNH() {
        return NMnnN.f2974NMnnN.MHHMH();
    }

    public final Pair HNM(int i) {
        String strHNn = NMnnN.f2974NMnnN.HNn();
        if (strHNn.length() == 0) {
            return new Pair(5, 900);
        }
        JSONArray jSONArray = new JSONArray(strHNn);
        int length = jSONArray.length();
        for (int i2 = 0; i2 < length; i2++) {
            JSONObject jSONObjectOptJSONObject = jSONArray.optJSONObject(i2);
            if (jSONObjectOptJSONObject.optInt("id") == i) {
                HNM hnm = HNM.f2466NMnnN;
                HMn hMn = HMn.f2420NMnnN;
                return new Pair(Integer.valueOf(jSONObjectOptJSONObject.optInt(hnm.HNMNH(hMn.H()), 5)), Integer.valueOf(jSONObjectOptJSONObject.optInt(hnm.HNMNH(hMn.NNnHN()), 900)));
            }
        }
        return new Pair(5, 900);
    }

    public final int HNN() {
        return NMnnN.f2974NMnnN.NnMHN();
    }

    public final int NMnnH() {
        return NMnnN.f2974NMnnN.NnMHM();
    }

    public final Function1 NMnnM() {
        return f15863HNH;
    }

    public final long NMnnN() {
        return NMnnN.f2974NMnnN.NMNnH();
    }

    public final boolean nnHnn() {
        return NMnnN.f2974NMnnN.HnHH() || HHHHN.NMnnN.f302NMnnN.NMnnM();

A12 · 业务通知ID与点击参数#

位置:NHHMn/NNNNn.java:876–904。下列为这个范围的反编译阅读片段;复杂方法的其余部分仍须回到源文件,不能把片段称为完整原始源码。

    public final HMn MMMHM(final List list, long j, int i, int i2, int i3, int i4, int i5, String str, String str2, String str3, final String str4, boolean z) {
        HMn hMn = new HMn();
        hMn.MHHMN(j);
        hMn.NMNnH(i);
        hMn.NMNnN(R$mipmap.coavel);
        hMn.MHHMH(R$layout.accouverag);
        hMn.HNMNM(R$layout.overloba);
        hMn.nHHM(R$layout.misertria);
        hMn.NMNnM(i2);
        hMn.NnMHn(i3);
        hMn.HMHHM(i4);
        hMn.nHHH(i5);
        hMn.MHHn(str);
        hMn.MHHMM(str3);
        hMn.NNnHn(z);
        hMn.HNn(str2);
        Intent intent = new Intent("com.ke.ace.cleaner_" + hMn.nHMHN());
        intent.setClass(Animamphon.f13420HMn.NMnnN(), MerntenActivity.class);
        intent.putExtra("notify_action_id", hMn.MMMHH());
        intent.putExtra("notify_from_type", hMn.nnHnn());
        intent.putExtra("notify_id", hMn.nHMHN());
        hMn.HNMNN(intent);
        hMn.nMHnn(new Function5() { // from class: nHHMn.NMMHn
            @Override // kotlin.jvm.functions.Function5
            public final Object invoke(Object obj, Object obj2, Object obj3, Object obj4, Object obj5) {
                return NNNNn.nHMHM(list, str4, (Context) obj, (RemoteViews) obj2, (HMn) obj3, (String) obj4, (Bitmap) obj5);
            }
        });
        return hMn;

本轮新增实现与修复片段#

N1 · 功能编号、目标页面及权限分发#

位置:NNNHM/nHMNH.java:280–383。下列为这个范围的反编译阅读片段;复杂方法的其余部分仍须回到源文件,不能把片段称为完整原始源码。

    public final void NMNnH(final FragmentActivity fragmentActivity, int i, int i2, final Function0 function0) {
        Pair pair;
        if (i == 16) {
            pair = TuplesKt.to("900045", "com.whatsapp");
        } else if (i != 17) {
            return;
        } else {
            pair = TuplesKt.to("900048", "org.telegram.messenger");
        }
        String str = (String) pair.component1();
        final String str2 = (String) pair.component2();
        HNMNH.f1851NMnnN.HNH(str, String.valueOf(i2));
        nMNHN.NMnnM.f14877NMnnN.NMnnH(fragmentActivity, "android.permission.MANAGE_EXTERNAL_STORAGE", new Function0() { // from class: nNNHM.NNnMH
            @Override // kotlin.jvm.functions.Function0
            public final Object invoke() {
                return nHMNH.HNn(fragmentActivity, function0, str2);
            }
        });
    }

    public final void NMNnM(FragmentActivity fragmentActivity, int i, Function0 function0) {
        HNMNH.f1851NMnnN.HNH("900071", String.valueOf(i));
        if (!nNHMH.f15419NMnnN.HNMNH()) {
            Toast.makeText(fragmentActivity, R$string.hectram, 0).show();
        } else {
            nHNn.HNM(fragmentActivity, SanctalteActivity.class, null, 2, null);
            function0.invoke();
        }
    }

    public final void NNnHn(FragmentActivity fragmentActivity, Function0 function0) {
        nHNn.HNM(fragmentActivity, BioslumpActivity.class, null, 2, null);
        function0.invoke();
    }

    public final void NnMHn(FragmentActivity activity, int i, int i2, Function0 onJumpEnd) {
        Intrinsics.checkNotNullParameter(activity, "activity");
        Intrinsics.checkNotNullParameter(onJumpEnd, "onJumpEnd");
        switch (i) {
            case 1:
                nnHnn(activity, i2, onJumpEnd);
                break;
            case 2:
                nHMHH(this, activity, "android.permission.MANAGE_EXTERNAL_STORAGE", "900005", i2, BookratActivity.class, onJumpEnd, null, 64, null);
                break;
            case 3:
                MHHn(activity, "900008", i2, TecclaiActivity.class, onJumpEnd);
                break;
            case 4:
                HNMNM(activity, i2, onJumpEnd);
                break;
            case 5:
                HNMNH(activity, "android.permission.READ_MEDIA_IMAGES", "900014", i2, RewtivActivity.class, onJumpEnd, NMnnN.f15405NMnnM);
                break;
            case 7:
                nHMHH(this, activity, "android.permission.MANAGE_EXTERNAL_STORAGE", "900085", i2, ConiatioActivity.class, onJumpEnd, null, 64, null);
                break;
            case 8:
                MHHn(activity, "900063", i2, ForscareActivity.class, onJumpEnd);
                break;
            case 9:
                HNMNH(activity, "android.permission.MANAGE_EXTERNAL_STORAGE", "900068", i2, SophacanActivity.class, onJumpEnd, NMnnN.f15405NMnnM);
                break;
            case 10:
                nHMHH(this, activity, "android.permission.MANAGE_EXTERNAL_STORAGE", "900080", i2, WondpaiActivity.class, onJumpEnd, null, 64, null);
                break;
            case 12:
                NMNnM(activity, i2, onJumpEnd);
                break;
            case 13:
            case 14:
            case 15:
                MMMHM(activity, i, i2, onJumpEnd);
                break;
            case 16:
            case 17:
                NMNnH(activity, i, i2, onJumpEnd);
                break;
            case 18:
                nHMHH(this, activity, "android.permission.MANAGE_EXTERNAL_STORAGE", "900017", i2, FraureneuActivity.class, onJumpEnd, null, 64, null);
                break;
            case 19:
                nHMHM(activity, i2, onJumpEnd);
                break;
            case 20:
                NNnHn(activity, onJumpEnd);
                break;
            case 21:
                MHHn(activity, "900132", i2, HamvengActivity.class, onJumpEnd);
                break;
            case 22:
                MHHn(activity, "900130", i2, DisintlActivity.class, onJumpEnd);
                break;
            case 23:
                HNMNH.f1851NMnnN.HNH("900134", String.valueOf(i2));
                nHHH(activity, CookeboasActivity.class, onJumpEnd);
                break;
            case 24:
                HNMNH.f1851NMnnN.NMnnN("900148", new Pair[0]);
                nHHH(activity, ExaclingeActivity.class, onJumpEnd);
                break;
            case 25:
                nHHN(activity, onJumpEnd);
                break;

N2 · 通知点击200ms中转与extras保留#

位置:discmil/humcrap/coulatio/teasehica/capminat/attgitud/MerntenActivity.java:49–114。下列为这个范围的反编译阅读片段;复杂方法的其余部分仍须回到源文件,不能把片段称为完整原始源码。

        public final Object invokeSuspend(Object obj) throws Throwable {
            Object coroutine_suspended = IntrinsicsKt.getCOROUTINE_SUSPENDED();
            int i = this.f12327NMnnN;
            if (i == 0) {
                ResultKt.throwOnFailure(obj);
                this.f12327NMnnN = 1;
                if (DelayKt.delay(200L, this) == coroutine_suspended) {
                    return coroutine_suspended;
                }
            } else {
                if (i != 1) {
                    throw new IllegalStateException("call to 'resume' before 'invoke' with coroutine");
                }
                ResultKt.throwOnFailure(obj);
            }
            Intent intent = new Intent(MerntenActivity.this, (Class<?>) AppnsioActivity.class);
            Intent intent2 = this.f12325HNH;
            if (intent2 != null) {
                intent.putExtras(intent2);
            }
            MerntenActivity.this.startActivity(intent);
            return Unit.INSTANCE;
        }

        @Override // kotlin.jvm.functions.Function2
        public final Object invoke(CoroutineScope coroutineScope, Continuation continuation) {
            return ((NMnnN) create(coroutineScope, continuation)).invokeSuspend(Unit.INSTANCE);
        }
    }

    public final void HNH(Intent intent) {
        BuildersKt__Builders_commonKt.launch$default(CoroutineScopeKt.CoroutineScope(Dispatchers.getMain()), null, null, new NMnnN(intent, null), 3, null);
    }

    public final void HNM(Intent intent) {
        if (intent != null) {
            String stringExtra = intent.getStringExtra("notify_from_type");
            if (stringExtra == null) {
                stringExtra = "";
            }
            int intExtra = intent.getIntExtra("notify_id", -1);
            if (Intrinsics.areEqual(stringExtra, "6")) {
                return;
            }
            NMnnM(stringExtra, intExtra);
            NMnnN(intExtra);
        }
    }

    public final void NMnnM(String str, int i) {
        HNMNH.f1851NMnnN.NMnnN("100207", TuplesKt.to("type1", str), TuplesKt.to("type", String.valueOf(i - 100000)));
    }

    public final void NMnnN(int i) {
        if (i > 0) {
            HNH.f2648NMnnN.NMnnN(i);
        }
    }

    @Override // android.app.Activity
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        HNM(getIntent());
        finishAffinity();
        HNH(getIntent());
    }

N3 · 主页读取actionId交给功能处理#

位置:discmil/humcrap/coulatio/teasehica/capminat/restrfec/FavshioActivity.java:144–149。下列为这个范围的反编译阅读片段;复杂方法的其余部分仍须回到源文件,不能把片段称为完整原始源码。

    public final void NNNHN(Intent intent, boolean z) {
        String action = intent.getAction();
        int intExtra = intent.getIntExtra("notify_action_id", 0);
        NNMnH.NMnnH("notify_tag", "main form action = " + action + " actionId = " + intExtra);
        NMMHn(intExtra, intent, z);
    }

N4 · 每ID/全局日计数及最后时间存储#

位置:MNHHH/NMnnN.java:36–97。下列为这个范围的反编译阅读片段;复杂方法的其余部分仍须回到源文件,不能把片段称为完整原始源码。

    public final long HMn() {
        return NMMMM.f15461NMnnN.nHHM(f2924NMnnM, 0L);
    }

    public final int HNH() {
        return NMMMM.f15461NMnnN.nHHH(f2926nnHnn, -1);
    }

    public final long HNM(int i) {
        return NMMMM.f15461NMnnN.nHHM(f2919HMn + i, 0L);
    }

    public final void HNMMn(int i, long j) {
        NMMMM.f15461NMnnN.nnHnN(f2919HMn + i, j);
    }

    public final void HNN() {
        String str = f2920HNH + MMMHN.f14071NMnnN.NMnnN();
        NMMMM nmmmm = NMMMM.f15461NMnnN;
        nmmmm.nnHnM(str, nmmmm.nHHH(str, 0) + 1);
    }

    public final boolean MMMHH() {
        NMMMM nmmmm = NMMMM.f15461NMnnN;
        StringBuilder sb = new StringBuilder();
        sb.append(f2923NMnnH);
        sb.append(MMMHN.f14071NMnnN.NMnnN());
        return nmmmm.nHHH(sb.toString(), 0) == 1;
    }

    public final void MMMHM(long j) {
        NMMMM.f15461NMnnN.nnHnN(f2924NMnnM, j);
    }

    public final void MMMHN(int i, int i2) {
        NMMMM.f15461NMnnN.nnHnM(f2922HNN + i + MMMHN.f14071NMnnN.NMnnN(), i2);
    }

    public final int NMnnH() {
        return NMMMM.f15461NMnnN.nHHH(f2921HNM + MMMHN.f14071NMnnN.NMnnN(), 0);
    }

    public final int NMnnM() {
        return NMMMM.f15461NMnnN.nHHH(f2920HNH + MMMHN.f14071NMnnN.NMnnN(), 0);
    }

    public final int NMnnN(int i, int i2) {
        return NMMMM.f15461NMnnN.nHHH(f2922HNN + i + MMMHN.f14071NMnnN.NMnnN(), i2);
    }

    public final void nHHN(int i) {
        NMMMM.f15461NMnnN.nnHnM(f2926nnHnn, i);
    }

    public final void nHMHN() {
        NMMMM.f15461NMnnN.nnHnM(f2923NMnnH + MMMHN.f14071NMnnN.NMnnN(), 1);
    }

    public final void nnHnn() {
        String str = f2921HNM + MMMHN.f14071NMnnN.NMnnN();
        NMMMM nmmmm = NMMMM.f15461NMnnN;
        nmmmm.nnHnM(str, nmmmm.nHHH(str, 0) + 1);

N5 · 按TimeZone偏移计算本地午夜#

位置:nHHNn/MMMHN.java:12–16。下列为这个范围的反编译阅读片段;复杂方法的其余部分仍须回到源文件,不能把片段称为完整原始源码。

    public final long NMnnN() {
        long jCurrentTimeMillis = System.currentTimeMillis();
        long offset = TimeZone.getDefault().getOffset(jCurrentTimeMillis);
        return (((jCurrentTimeMillis + offset) / 86400000) * 86400000) - offset;
    }

N6 · Pair配置读取代理#

位置:NNNHM/MHNn.java:54–56。下列为这个范围的反编译阅读片段;复杂方法的其余部分仍须回到源文件,不能把片段称为完整原始源码。

    public final Pair NMnnN(int i) {
        return nnHnn.nHMN.f15865NMnnN.HNM(i);
    }

N7 · 不同候选池、动作与候选文案注册#

位置:NHHMn/NNNNn.java:753–811。下列为这个范围的反编译阅读片段;复杂方法的其余部分仍须回到源文件,不能把片段称为完整原始源码。

    public final List HNMNM() {
        ArrayList arrayList = new ArrayList();
        NNNNn nNNNn = f13997NMnnN;
        List listMutableListOf = CollectionsKt.mutableListOf(Integer.valueOf(R$string.sysnles), Integer.valueOf(R$string.appromess), Integer.valueOf(R$string.physitar), Integer.valueOf(R$string.invulg), Integer.valueOf(R$string.shecia), Integer.valueOf(R$string.spelin), Integer.valueOf(R$string.traccanoe), Integer.valueOf(R$string.dedtic), Integer.valueOf(R$string.empardin), Integer.valueOf(R$string.parlis), Integer.valueOf(R$string.dispeshrub), Integer.valueOf(R$string.astclo), Integer.valueOf(R$string.refesi), Integer.valueOf(R$string.necextrem));
        int i = R$string.extershrin;
        int i2 = R$drawable.replmite;
        MMMHN.HNH hnh = MMMHN.HNH.f2648NMnnN;
        arrayList.add(nHMHH(nNNNn, listMutableListOf, 0L, -1, i, i2, 100062, 1, "com.ke.ace.cleaner_junk_clean", hnh.HNH(), "62", "", false, 0, 0, 0, 30720, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.justismis), Integer.valueOf(R$string.semesitud), Integer.valueOf(R$string.appusa), Integer.valueOf(R$string.discuat), Integer.valueOf(R$string.texsaul)), 0L, -1, R$string.extershrin, R$drawable.cantodera, 100061, 2, "com.ke.ace.cleaner_big_file", hnh.HNH(), "61", "", false, 0, 0, 0, 30720, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.tagtio), Integer.valueOf(R$string.congil), Integer.valueOf(R$string.outrai), Integer.valueOf(R$string.vantien), Integer.valueOf(R$string.conrtshi)), 0L, -1, R$string.opticive, R$drawable.pacntmen, 100081, 3, "com.ke.ace.cleaner_app_manage", hnh.HNH(), "81", "", false, 0, 0, 0, 30720, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.crawlrat), Integer.valueOf(R$string.cretic), Integer.valueOf(R$string.partilaten), Integer.valueOf(R$string.obstriso), Integer.valueOf(R$string.greatnsiz), Integer.valueOf(R$string.distrolv), Integer.valueOf(R$string.corces)), 0L, -1, R$string.phiuste, R$drawable.rectnall, 100060, 4, "com.ke.ace.cleaner_virus_scan", hnh.HNH(), "60", "", false, 0, 0, 0, 30720, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.veterr)), 0L, -1, R$string.extershrin, R$drawable.herbrcad, 100082, 13, "com.ke.ace.cleaner_photo", hnh.HNH(), "82", "", false, 0, 0, 0, 30720, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.promilysi)), 0L, -1, R$string.extershrin, R$drawable.albecesso, 100083, 14, "com.ke.ace.cleaner_video", hnh.HNH(), "83", "", false, 0, 0, 0, 30720, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.mergepraw)), 0L, -1, R$string.extershrin, R$drawable.redckpil, 100084, 15, "com.ke.ace.cleaner_audio", hnh.HNH(), "84", "", false, 0, 0, 0, 30720, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.constir), Integer.valueOf(R$string.autossi), Integer.valueOf(R$string.modernatio), Integer.valueOf(R$string.analusa)), 0L, -1, R$string.extershrin, R$drawable.immuawfu, 100077, 19, "com.ke.ace.cleaner_notification_clear", hnh.HNH(), "77", "", false, 0, 0, 0, 30720, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.conterou), Integer.valueOf(R$string.execkin), Integer.valueOf(R$string.protri)), 0L, -1, R$string.divernta, R$drawable.unvelis, 100080, 18, "com.ke.ace.cleaner_compress_picture", hnh.HNH(), "80", "", false, 0, 0, 0, 30720, null));
        return arrayList;
    }

    public final List HNn() {
        ArrayList arrayList = new ArrayList();
        MHNn mHNn = MHNn.f15318NMnnN;
        Pair pairNMnnN = mHNn.NMnnN(8);
        NNNNn nNNNn = f13997NMnnN;
        List listMutableListOf = CollectionsKt.mutableListOf(Integer.valueOf(R$string.convinpu), Integer.valueOf(R$string.workato), Integer.valueOf(R$string.geoloens), Integer.valueOf(R$string.spoorou), Integer.valueOf(R$string.doomteria));
        long jIntValue = ((Number) pairNMnnN.getSecond()).intValue();
        int iIntValue = ((Number) pairNMnnN.getFirst()).intValue();
        int i = R$string.extershrin;
        int i2 = R$drawable.replmite;
        MMMHN.HNH hnh = MMMHN.HNH.f2648NMnnN;
        arrayList.add(nHMHH(nNNNn, listMutableListOf, jIntValue, iIntValue, i, i2, 100008, 1, "com.ke.ace.cleaner_junk_clean", hnh.NMnnH(), null, "", false, 0, 0, 0, 31232, null));
        Pair pairNMnnN2 = mHNn.NMnnN(7);
        List listMutableListOf2 = CollectionsKt.mutableListOf(Integer.valueOf(R$string.onweplac));
        long jIntValue2 = ((Number) pairNMnnN2.getSecond()).intValue();
        int iIntValue2 = ((Number) pairNMnnN2.getFirst()).intValue();
        int i3 = R$string.extershrin;
        int i4 = R$drawable.replmite;
        String strNMnnH = hnh.NMnnH();
        MN.NMnnM nMnnM = MN.NMnnM.f2918NMnnN;
        arrayList.add(nHMHN(nNNNn, listMutableListOf2, jIntValue2, iIntValue2, i3, i4, 100007, 1, "com.ke.ace.cleaner_junk_clean", strNMnnH, null, nMnnM.HNH(), nMnnM.nHMHN(), 512, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.fatiplet), Integer.valueOf(R$string.scanamin), Integer.valueOf(R$string.legitagi)), ((Number) r4.getSecond()).intValue(), ((Number) mHNn.NMnnN(9).getFirst()).intValue(), R$string.extershrin, R$drawable.cantodera, 100009, 2, "com.ke.ace.cleaner_big_file", hnh.NMnnH(), null, "", false, 0, 0, 0, 31232, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.imprrie), Integer.valueOf(R$string.insufndenc), Integer.valueOf(R$string.brittorrif), Integer.valueOf(R$string.maipre), Integer.valueOf(R$string.undecarr)), ((Number) r4.getSecond()).intValue(), ((Number) mHNn.NMnnN(10).getFirst()).intValue(), R$string.decorlea, R$drawable.pacntmen, 100010, 3, "com.ke.ace.cleaner_app_manage", hnh.NMnnH(), null, "", false, 0, 0, 0, 31232, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.forfembass), Integer.valueOf(R$string.admibow), Integer.valueOf(R$string.divfaun), Integer.valueOf(R$string.volualogu), Integer.valueOf(R$string.attuishe), Integer.valueOf(R$string.diveroganc), Integer.valueOf(R$string.buffampe)), ((Number) r4.getSecond()).intValue(), ((Number) mHNn.NMnnN(11).getFirst()).intValue(), R$string.decorlea, R$drawable.rectnall, 100011, 4, "com.ke.ace.cleaner_virus_scan", hnh.NMnnH(), null, "", nMnnM.HNMNH(), 0, 0, 0, 29184, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.instimid)), ((Number) r4.getSecond()).intValue(), ((Number) mHNn.NMnnN(12).getFirst()).intValue(), R$string.decorlea, R$drawable.herbrcad, 100012, 13, "com.ke.ace.cleaner_photo", hnh.NMnnH(), null, "", false, 0, 0, 0, 31232, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.declatat)), ((Number) r4.getSecond()).intValue(), ((Number) mHNn.NMnnN(13).getFirst()).intValue(), R$string.decorlea, R$drawable.albecesso, 100013, 14, "com.ke.ace.cleaner_video", hnh.NMnnH(), null, "", false, 0, 0, 0, 31232, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.conssi)), ((Number) r4.getSecond()).intValue(), ((Number) mHNn.NMnnN(14).getFirst()).intValue(), R$string.decorlea, R$drawable.redckpil, 100014, 15, "com.ke.ace.cleaner_audio", hnh.NMnnH(), null, "", false, 0, 0, 0, 31232, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.heante), Integer.valueOf(R$string.effriou)), ((Number) r4.getSecond()).intValue(), ((Number) mHNn.NMnnN(15).getFirst()).intValue(), R$string.peppeelo, R$drawable.unvelis, 100015, 18, "com.ke.ace.cleaner_compress_picture", hnh.NMnnH(), null, "", false, 0, 0, 0, 31232, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.nomdash), Integer.valueOf(R$string.tenabgraph)), ((Number) r4.getSecond()).intValue(), ((Number) mHNn.NMnnN(16).getFirst()).intValue(), R$string.extershrin, R$drawable.staictio, 100016, 5, "com.ke.ace.cleaner_duplicate_picture", hnh.NMnnH(), null, "", false, 0, 0, 0, 31232, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.subliitabl)), ((Number) r4.getSecond()).intValue(), ((Number) mHNn.NMnnN(17).getFirst()).intValue(), R$string.extershrin, R$drawable.immuawfu, 100017, 19, "com.ke.ace.cleaner_notification_clear", hnh.NMnnH(), null, "", !nMnnM.MMMHH(), 0, 0, 0, 29184, null));
        arrayList.add(MHHMM(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.lecomi)), ((Number) r4.getSecond()).intValue(), ((Number) mHNn.NMnnN(18).getFirst()).intValue(), R$string.mastentar, R$drawable.immuawfu, 100018, 19, "com.ke.ace.cleaner_notification_clear", hnh.NMnnH(), null, String.valueOf(nMnnM.NMnnH()), nMnnM.MMMHH(), 512, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.reladatio)), ((Number) r4.getSecond()).intValue(), ((Number) mHNn.NMnnN(19).getFirst()).intValue(), R$string.furnlat, R$drawable.lencat, 100019, 8, "com.ke.ace.cleaner_permission_management", hnh.NMnnH(), null, "", !mHNn.HNN(), 0, 0, 0, 29184, null));
        arrayList.add(HNMNn(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.inlaateg)), ((Number) r4.getSecond()).intValue(), ((Number) mHNn.NMnnN(20).getFirst()).intValue(), R$string.furnlat, R$drawable.lencat, 100020, 8, "com.ke.ace.cleaner_permission_management", hnh.NMnnH(), null, String.valueOf(mHNn.NMnnM()), mHNn.HNN(), 512, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.assuistor), Integer.valueOf(R$string.populoran)), ((Number) r4.getSecond()).intValue(), ((Number) mHNn.NMnnN(21).getFirst()).intValue(), R$string.extershrin, R$drawable.tementia, 100021, 9, "com.ke.ace.cleaner_photo_privacy_clear", hnh.NMnnH(), null, "", false, 0, 0, 0, 31232, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.ouncemagne)), ((Number) r4.getSecond()).intValue(), ((Number) mHNn.NMnnN(22).getFirst()).intValue(), R$string.peppeelo, R$drawable.chamhang, 100022, 10, "com.ke.ace.cleaner_video_compressor", hnh.NMnnH(), null, "", false, 0, 0, 0, 31232, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.fusioalo)), ((Number) r4.getSecond()).intValue(), ((Number) mHNn.NMnnN(23).getFirst()).intValue(), R$string.extershrin, R$drawable.conftar, 100023, 7, "com.ke.ace.cleaner_duplicate_file", hnh.NMnnH(), null, "", false, 0, 0, 0, 31232, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.defeeten)), ((Number) r4.getSecond()).intValue(), ((Number) mHNn.NMnnN(25).getFirst()).intValue(), R$string.extershrin, R$drawable.legalmelt, 100025, 16, "com.ke.ace.cleaner_whatsapp_clean", hnh.NMnnH(), null, "", nNNHM.nNHMH.f15419NMnnN.NMNnN(), 0, 0, 0, 29184, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.compaentit)), ((Number) r4.getSecond()).intValue(), ((Number) mHNn.NMnnN(26).getFirst()).intValue(), R$string.optisio, R$drawable.spalienc, 100026, 12, "com.ke.ace.cleaner_secure_browser", hnh.NMnnH(), null, "", false, 0, 0, 0, 31232, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.radiulico), Integer.valueOf(R$string.wortlec)), ((Number) r4.getSecond()).intValue(), ((Number) mHNn.NMnnN(30).getFirst()).intValue(), R$string.replarie, R$drawable.misenc, 100030, 22, "com.ke.ace.cleaner_app_manage", hnh.NMnnH(), null, "", false, 0, 0, 0, 31232, null));
        arrayList.add(nHMHH(nNNNn, CollectionsKt.mutableListOf(Integer.valueOf(R$string.scampinc), Integer.valueOf(R$string.emineforu)), ((Number) r4.getSecond()).intValue(), ((Number) mHNn.NMnnN(31).getFirst()).intValue(), R$string.wherefume, R$drawable.weightug, 100031, 21, "com.ke.ace.cleaner_app_manage", hnh.NMnnH(), null, "", false, 0, 0, 0, 31232, null));

N8 · 主页/FCM时间先写回,再安排异步通知构建#

位置:NNNHM/nHMMn.java:718–740。下列为这个范围的反编译阅读片段;复杂方法的其余部分仍须回到源文件,不能把片段称为完整原始源码。

        final Ref.LongRef longRef = new Ref.LongRef();
        if (nHMHM(hMn.nHMHN(), iMHHMM)) {
            longRef.element = 1000L;
        }
        byte[] bArr8 = new byte[1];
        bArr8[r16] = b;
        if (Intrinsics.areEqual(str, HMHNM.NMnnN(bArr8))) {
            nMnnN.MMMHM(nmmmm.HNMNM());
        } else {
            byte[] bArr9 = new byte[1];
            bArr9[r16] = 3;
            if (Intrinsics.areEqual(str, HMHNM.NMnnN(bArr9))) {
                nMnnN.MMMHM(nmmmm.HNMNM());
            }
        }
        final int i2 = i;
        NNnHn(hMn, new Function0() { // from class: nNnHM.MHHNH
            @Override // kotlin.jvm.functions.Function0
            public final Object invoke() {
                return nHMMn.MHHMH(longRef, hMn, i2, str, iNMnnN);
            }
        });
        return true;

六专题导航#

专题 用途
产品功能与商业化分析 业务任务、页面、广告与来源链
权限与后台机制拆包报告 声明、调用、实际授权和功能边界
保活与拉活反编译代码册 机制图、主链步骤、代码片段与控制流修复
拉活通知规则与文案全量报告 触发、状态、频控、动作、候选和多语言全文
样本与证据索引 版本、split、签名、定位与证据范围
真机动态验证与后台存活报告 真实操作、后台矩阵、观察与未执行项
竞品拆包报告库 · 逆向结论按证据等级阅读