宽表格和代码可左右滑动查看。
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、签名、定位与证据范围 |
| 真机动态验证与后台存活报告 | 真实操作、后台矩阵、观察与未执行项 |