找到2个类共3处代码引用。
最后那个类的起名有点耐人寻味,PasswdRedBagManager,密码红包管理器,有点意思:
public void b(String str) {
((TroopTipsMsgMgr) this.f2203a.getManager(80)).a(str, "u533fu540du4e0du80fdu62a2u53e3u4ee4u7ea2u5305u54e6", NetConnInfoCenter.getServerTime(), BaseConstants.DEFAULT_QUICK_HEARTBEAT_TIMEOUT, f);
}
这串Unicode转换成中文后是”匿名不能抢口令红包哦”,原来还有这种逻辑,产品经理你真是够了。
这里我们重新从该类的上面看下来,大致扫一扫,发现onDestroy下面有一个方法打的log很神奇:
public long[] m883a(SessionInfo sessionInfo, String str) {
if (QLog.isColorLevel()) {
QLog.d(f2197a, (int) h, "openPasswdRedBagByPassword, passwd = " + str);
}
long[] jArr = new long[]{0, 0};
if (sessionInfo == null) {
return jArr;
}
if (TextUtils.isEmpty(str)) {
return jArr;
}
c();
List<String> list = (List) this.f2206a.get(str);
if (list == null || list.isEmpty()) {
return jArr;
}
PasswdRedBagInfo passwdRedBagInfo;
String str2 = a(sessionInfo.a) + "_" + sessionInfo.f1757a;
for (String str3 : list) {
HashMap hashMap = (HashMap) this.f2209b.get(str3);
if (hashMap != null) {
passwdRedBagInfo = (PasswdRedBagInfo) hashMap.get(str2);
if (!(passwdRedBagInfo == null || a(str3))) {
jArr[g] = passwdRedBagInfo.a.uint64_creator_uin.get();
if (!b(str3)) {
if (!c(str3)) {
hashMap.put(str2, passwdRedBagInfo);
jArr[f] = 1;
break;
}
jArr[f] = 3;
} else {
jArr[f] = 2;
}
}
}
}
passwdRedBagInfo = null;
if (passwdRedBagInfo == null) {
return jArr;
}
b(sessionInfo.a, sessionInfo.f1757a, passwdRedBagInfo.a.string_redbag_id.get().toStringUtf8());
a(sessionInfo, passwdRedBagInfo);
return jArr;
}
isColorLevel目测是某种debug用的tag,可能某些环境下部分用户会打开,而从log结合我们平时打log习惯来看,这个方法应该就叫openPasswdRedBagByPassword了,第二个参数就是password。终于找到了。看一下逻辑大致是从外面load进来所有红包信息到本类的各种hashmap和list(有一个tag,只会加载第一次,本类多个方法都会调用这个方法),然后根据password从里面找到对应passwdRedBagInfo,设置result tag,然后调用了










