QQ浏览器 v12.2.3.7053版本的 MD5 值为:8285ab3059e5c8b521a264dfbc5c3685
以下内容为反编译后的 WalledGardenDetector.java 源代码,内容仅作参考
package com.tencent.mtt.base.task;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkInfo;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.text.TextUtils;
import com.tencent.basesupport.FLogger;
import com.tencent.common.connectivity.ConnectivityAdapterHolder;
import com.tencent.common.http.Apn;
import com.tencent.mm.ui.widget.dialog.MMTipsBar;
import com.tencent.mtt.ContextHolder;
import java.util.ArrayList;
import java.util.Iterator;
public class WalledGardenDetector implements Handler.Callback, WalledGardenTaskObserver {
public ArrayList<WalledGardenMessage> f33229a;
private String f33231c;
private ArrayList<BaseWalledGardenTask> f33232d;
private WalledGardenDetectListener f;
private ArrayList<WalledGardenMessage> h;
private int e = -1;
private boolean g = false;
private Handler f33230b = new Handler(Looper.getMainLooper(), this);
public interface WalledGardenDetectListener {
void a(String str, int i, String str2);
}
private int a(WalledGardenDetectTask walledGardenDetectTask) {
if (walledGardenDetectTask.c() == 0) {
return 40;
}
if (walledGardenDetectTask.c() == 2) {
return 30;
}
return walledGardenDetectTask.c() == 1 ? 20 : 10;
}
private Network a() {
Network[] allNetworks;
FLogger.d("WalledGardenDetector", "getWiFiNetWork");
ConnectivityManager b2 = b();
Network network = null;
if (b2 != null) {
try {
if (Build.VERSION.SDK_INT >= 21 && (allNetworks = b2.getAllNetworks()) != null) {
for (Network network2 : allNetworks) {
FLogger.d("WalledGardenDetector", "XXX-network : " + network2);
NetworkInfo networkInfo = b2.getNetworkInfo(network2);
if (networkInfo != null && networkInfo.getType() == 1) {
network = network2;
}
}
}
} catch (Exception unused) {
}
}
FLogger.d("WalledGardenDetector", "XXX-selected network : " + network);
return network;
}
private void a(Network network) {
this.f33230b.removeMessages(102);
this.f33230b.removeMessages(103);
Message obtainMessage = this.f33230b.obtainMessage();
obtainMessage.what = 102;
obtainMessage.obj = network;
obtainMessage.arg1 = 1;
this.f33230b.sendMessageDelayed(obtainMessage, 1000L);
this.f33230b.sendEmptyMessageDelayed(103, 15000L);
}
private void a(BaseWalledGardenTask baseWalledGardenTask, WalledGardenDetectTask walledGardenDetectTask) {
int a2 = a(walledGardenDetectTask);
FLogger.d("WalledGardenDetector", "seq=1;detect SSID=" + this.f33231c + ";status=" + a2 + ";tag=" + baseWalledGardenTask.f33207a);
int i = this.e;
if (a2 != i && a2 > i) {
this.e = a2;
}
this.h.add(walledGardenDetectTask.e());
FLogger.d("WalledGardenDetector", "seq=2;mPendingStatus=" + this.e + ";mCurrentTasks.size()=" + this.f33232d.size() + ";mHandler.hasMessages(MSG_RUN_DETECT_TASK)=" + this.f33230b.hasMessages(102));
if (this.f33232d.size() != 0 || this.f33230b.hasMessages(102)) {
int i2 = this.e;
if (i2 != 40 && i2 != 20 && i2 != 30) {
return;
}
this.f33230b.removeMessages(102);
Iterator<BaseWalledGardenTask> it = this.f33232d.iterator();
while (it.hasNext()) {
it.next().a();
}
ArrayList<WalledGardenMessage> arrayList = new ArrayList<>();
arrayList.addAll(this.h);
this.f33229a = arrayList;
WalledGardenDetectListener walledGardenDetectListener = this.f;
if (walledGardenDetectListener != null) {
walledGardenDetectListener.a(this.f33231c, this.e, walledGardenDetectTask.d());
}
this.f33231c = null;
this.f33232d.clear();
} else {
this.f33230b.removeMessages(102);
this.f33230b.removeMessages(103);
ArrayList<WalledGardenMessage> arrayList2 = new ArrayList<>();
arrayList2.addAll(this.h);
this.f33229a = arrayList2;
WalledGardenDetectListener walledGardenDetectListener2 = this.f;
if (walledGardenDetectListener2 != null) {
walledGardenDetectListener2.a(this.f33231c, this.e, walledGardenDetectTask.d());
}
this.f33231c = null;
}
this.f33230b.removeMessages(102);
this.f33230b.removeMessages(103);
}
private void a(String str) {
NetworkInfo activeNetworkInfo;
FLogger.d("WalledGardenDetector", "doDetect.................." + str);
this.f33231c = str;
ArrayList<BaseWalledGardenTask> arrayList = this.f33232d;
if (arrayList != null && arrayList.size() > 0) {
Iterator<BaseWalledGardenTask> it = this.f33232d.iterator();
while (it.hasNext()) {
it.next().a();
}
}
if (this.f33232d == null) {
this.f33232d = new ArrayList<>();
}
if (this.h == null) {
this.h = new ArrayList<>();
}
this.h.clear();
this.e = -1;
boolean z = (Build.VERSION.SDK_INT < 21 || (activeNetworkInfo = Apn.getActiveNetworkInfo(false)) == null || activeNetworkInfo.getType() == 1) ? false : true;
FLogger.d("WalledGardenDetector", "doDetect() needNetworkRequest: " + z);
if (z) {
try {
a(a());
return;
} catch (Throwable th) {
FLogger.d("WalledGardenDetector", "seq=1;exception=" + th.getMessage());
}
}
a((Network) null);
}
private ConnectivityManager b() {
try {
try {
return (ConnectivityManager) ContextHolder.getAppContext().getSystemService("connectivity");
} catch (Exception unused) {
return (ConnectivityManager) ContextHolder.getAppContext().getSystemService("connectivity");
}
} catch (Exception unused2) {
return null;
}
}
private void b(BaseWalledGardenTask baseWalledGardenTask) {
if (this.f33232d.contains(baseWalledGardenTask)) {
this.f33232d.remove(baseWalledGardenTask);
if (baseWalledGardenTask == null || !(baseWalledGardenTask instanceof WalledGardenDetectTask)) {
return;
}
WalledGardenDetectTask walledGardenDetectTask = (WalledGardenDetectTask) baseWalledGardenTask;
if (TextUtils.isEmpty(this.f33231c) || TextUtils.equals(this.f33231c, walledGardenDetectTask.f33227c)) {
a(baseWalledGardenTask, walledGardenDetectTask);
}
}
}
@Override
public void a(BaseWalledGardenTask baseWalledGardenTask) {
Message obtainMessage = this.f33230b.obtainMessage();
obtainMessage.what = 101;
obtainMessage.obj = baseWalledGardenTask;
this.f33230b.sendMessage(obtainMessage);
}
@Override
public boolean handleMessage(Message message) {
StringBuilder sb;
String str;
switch (message.what) {
case 100:
if (message.obj == null) {
return false;
}
a((String) message.obj);
return false;
case 101:
b((BaseWalledGardenTask) message.obj);
return false;
case 102:
Network network = message.obj != null ? (Network) message.obj : null;
WalledGardenDetectTask walledGardenDetectTask = new WalledGardenDetectTask();
walledGardenDetectTask.b(this.f33231c);
walledGardenDetectTask.a(this);
walledGardenDetectTask.a(network);
int i = message.arg1;
FLogger.d("WalledGardenDetector", "ID============================" + i);
if (i % 2 == 1) {
sb = new StringBuilder();
str = "QB204_";
} else {
walledGardenDetectTask.a("https://connect.rom.miui.com/generate_204");
sb = new StringBuilder();
str = "MIUI204_";
}
sb.append(str);
sb.append(i);
walledGardenDetectTask.f33207a = sb.toString();
this.f33232d.add(walledGardenDetectTask);
ConnectivityAdapterHolder.a(walledGardenDetectTask);
if (i < 4) {
Message obtainMessage = this.f33230b.obtainMessage();
obtainMessage.what = 102;
obtainMessage.obj = network;
obtainMessage.arg1 = i + 1;
this.f33230b.sendMessageDelayed(obtainMessage, MMTipsBar.DURATION_SHORT);
return false;
}
break;
case 103:
this.f33230b.removeMessages(102);
Iterator<BaseWalledGardenTask> it = this.f33232d.iterator();
while (it.hasNext()) {
it.next().a();
}
ArrayList<WalledGardenMessage> arrayList = new ArrayList<>();
arrayList.addAll(this.h);
this.f33229a = arrayList;
WalledGardenDetectListener walledGardenDetectListener = this.f;
if (walledGardenDetectListener != null) {
walledGardenDetectListener.a(this.f33231c, 10, "");
}
this.f33231c = null;
this.f33232d.clear();
break;
default:
return false;
}
this.f33230b.removeMessages(102);
return false;
}
}