QQ浏览器 v12.2.3.7053版本的 MD5 值为:8285ab3059e5c8b521a264dfbc5c3685

以下内容为反编译后的 QuickAppUtil.java 源代码,内容仅作参考


package com.tencent.mtt.businesscenter.page;

import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.webkit.WebResourceResponse;
import android.widget.LinearLayout;
import com.huawei.hms.opendevice.i;
import com.huawei.hms.support.hianalytics.HiAnalyticsConstant;
import com.tencent.common.http.MttRequestBase;
import com.tencent.common.manifest.annotation.CreateMethod;
import com.tencent.common.manifest.annotation.ServiceImpl;
import com.tencent.common.task.QBTask;
import com.tencent.common.utils.UrlUtils;
import com.tencent.luggage.wxa.lk.g;
import com.tencent.mtt.ContextHolder;
import com.tencent.mtt.R;
import com.tencent.mtt.base.functionwindow.ActivityHandler;
import com.tencent.mtt.base.skin.MttResources;
import com.tencent.mtt.base.stat.StatManager;
import com.tencent.mtt.base.utils.DeviceUtils;
import com.tencent.mtt.base.webview.QBWebView;
import com.tencent.mtt.base.wup.DomainListDataManager;
import com.tencent.mtt.base.wup.PreferenceData;
import com.tencent.mtt.browser.WebEngine;
import com.tencent.mtt.browser.business.IQuickAppService;
import com.tencent.mtt.businesscenter.stat.WebPageStatHelper;
import com.tencent.mtt.operation.event.EventLog;
import com.tencent.mtt.setting.PublicSettingManager;
import com.tencent.mtt.view.common.QBImageView;
import com.tencent.mtt.view.common.QBTextView;
import com.tencent.mtt.view.dialog.alert.QBAlertDialog;
import com.tencent.mtt.view.dialog.alert.QBAlertDialogBase;
import com.tencent.mtt.view.layout.QBLinearLayout;
import com.tencent.mtt.view.toast.MttToaster;
import com.tencent.qqlive.module.videoreport.collect.EventCollector;
import com.tencent.smtt.export.external.MiscMethodNames;
import com.tencent.smtt.sdk.QbSdk;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.locks.LockSupport;
import org.json.JSONArray;
import org.json.JSONObject;
import qb.a.e;
import qb.a.f;

@ServiceImpl(createMethod = CreateMethod.GET, service = IQuickAppService.class)
public class QuickAppUtil implements IQuickAppService {

    private static List<String> f47183a;

    private static QBAlertDialog f47184b;

    private static long f47185c;

    private static boolean f47186d;
    private static List<QuickAppBlackBean> e;
    private static List<String> f;

    public static class QuickAppBlackBean {

        private String f47206a;

        private List<String> f47207b;

        private List<String> f47208c;

        QuickAppBlackBean() {
        }

        public List<String> a() {
            return this.f47207b;
        }

        public void a(String str) {
            this.f47206a = str;
        }

        public List<String> b() {
            return this.f47208c;
        }

        public void b(String str) {
            if (this.f47207b == null) {
                this.f47207b = new ArrayList();
            }
            this.f47207b.add(str);
        }

        public void c(String str) {
            if (this.f47208c == null) {
                this.f47208c = new ArrayList();
            }
            this.f47208c.add(str);
        }
    }

    private static class SingletonInstance {

        private static final QuickAppUtil f47209a = new QuickAppUtil();

        private SingletonInstance() {
        }
    }

    static {
        String al = DeviceUtils.al();
        String am = DeviceUtils.am();
        if (al.toLowerCase().contains("ns") || al.contains("oneplus") || am.contains("oneplus")) {
            f47186d = true;
        }
    }

    private QuickAppUtil() {
    }

    static WebResourceResponse a(QBWebView qBWebView, String str) {
        StringBuilder sb;
        String str2;
        String sb2;
        if (TextUtils.equals(PublicSettingManager.a().getString("ANDROID_PUBLIC_PREFS_QUICK_APP_INTERCEPT_DISABLE", ""), "1")) {
            sb2 = "云控关闭了此功能!";
        } else {
            if (QBBussinessProxy.h) {
                EventLog.a("快应用", "当前是功能窗口在前台,不接受快应用调起!");
                return new WebResourceResponse("text/css", "UTF-8", null);
            }
            HashMap<String, String> urlParam = UrlUtils.getUrlParam(str);
            if (urlParam == null || urlParam.size() <= 0) {
                return null;
            }
            final String str3 = urlParam.get(i.TAG);
            final String host = UrlUtils.getHost(qBWebView.getUrl());
            if (TextUtils.isEmpty(str3)) {
                sb = new StringBuilder();
                str2 = "没有取到包名,快应用 web:";
            } else {
                if (System.currentTimeMillis() - f47185c < 1000) {
                    EventLog.a("快应用", "1秒内频繁调用,直接拒绝,快应用 web:" + host + " ,包名:" + str3);
                    return new WebResourceResponse("text/css", "UTF-8", null);
                }
                f47185c = System.currentTimeMillis();
                String str4 = Build.BRAND;
                if (DeviceUtils.f33280b) {
                    str4 = "huawei";
                } else if (DeviceUtils.i()) {
                    str4 = "xiaomi";
                } else if (DeviceUtils.t) {
                    str4 = "vivo";
                } else if (DeviceUtils.aC) {
                    str4 = "oppo";
                } else if (DeviceUtils.n()) {
                    str4 = "meizu";
                }
                final String str5 = str4;
                try {
                    Intent parseUri = Intent.parseUri("hap://app/" + str3, 1);
                    boolean z = (parseUri == null || ContextHolder.getAppContext().getPackageManager().resolveActivity(parseUri, 0) == null) ? false : true;
                    EventLog.a("快应用", "is installed : " + z);
                    if (!z) {
                        StatManager.b().c("EDQA001_7");
                        EventLog.a("快应用", "不支持的手机,快应用 web:" + host + " ,包名:" + str3);
                        return null;
                    }
                } catch (Exception unused) {
                }
                if (TextUtils.equals(PreferenceData.a("QUICK_APP_BLOCK_BY_CLOUD_KEY"), "2")) {
                    EventLog.a("快应用", "云控禁止访问,快应用 web:" + host + " ,包名:" + str3 + " ,brand:" + str5);
                    WebPageStatHelper.getInstance().stat("web_0123");
                    return new WebResourceResponse("text/css", "UTF-8", null);
                }
                f();
                if (!f47183a.contains(str3)) {
                    String string = PublicSettingManager.a().getString("key_quick_app_user_block_list", "");
                    if (!TextUtils.isEmpty(string) && string.contains(host)) {
                        StatManager.b().c("EDQA001_2");
                        MttToaster.show(R.string.b38, 0);
                        EventLog.a("快应用", "始终拦截,快应用 web:" + host + " ,包名:" + str3);
                        return new WebResourceResponse("text/css", "UTF-8", null);
                    }
                    g();
                    for (QuickAppBlackBean quickAppBlackBean : e) {
                        if (TextUtils.equals(quickAppBlackBean.f47206a, host) && a(quickAppBlackBean, qBWebView.getUrl())) {
                            return new WebResourceResponse("text/css", "UTF-8", null);
                        }
                    }
                    StatManager.b().c("EDQA001_1");
                    EventLog.a("快应用", "快应用 web:" + host + " ,包名:" + str3 + " ,brand:" + str5);
                    final int[] iArr = {0};
                    final Thread currentThread = Thread.currentThread();
                    QBTask.b((Callable) new Callable<Object>() {
                        @Override
                        public Object call() throws Exception {
                            QuickAppUtil.b(currentThread, host, str3, str5, iArr);
                            return null;
                        }
                    });
                    LockSupport.park(currentThread);
                    if (iArr[0] == 1) {
                        EventLog.a("快应用", "继续访问,快应用 web:" + host + " ,包名:" + str3 + " ,brand:" + str5);
                        return null;
                    }
                    EventLog.a("快应用", "禁止访问,快应用 web:" + host + " ,包名:" + str3 + " ,brand:" + str5);
                    return new WebResourceResponse("text/css", "UTF-8", null);
                }
                StatManager.b().c("EDQA001_6");
                sb = new StringBuilder();
                str2 = "白名单放行,快应用 web:";
            }
            sb.append(str2);
            sb.append(host);
            sb.append(" ,包名:");
            sb.append(str3);
            sb2 = sb.toString();
        }
        EventLog.a("快应用", sb2);
        return null;
    }

    public static void a() {
        PublicSettingManager.a().setString("key_quick_app_user_block_list", "");
    }

    private static boolean a(QuickAppBlackBean quickAppBlackBean, String str) {
        String str2;
        HashMap<String, String> urlParam = UrlUtils.getUrlParam(str);
        if (urlParam == null || urlParam.size() == 0) {
            return false;
        }
        List<String> a2 = quickAppBlackBean.a();
        List<String> b2 = quickAppBlackBean.b();
        Iterator<String> it = urlParam.keySet().iterator();
        int i = 0;
        while (true) {
            if (it.hasNext()) {
                String next = it.next();
                if (a2.contains(next)) {
                    i++;
                    if (!TextUtils.equals(b2.get(a2.indexOf(next)), urlParam.get(next))) {
                        str2 = "黑名单键值对不匹配";
                        break;
                    }
                }
            } else {
                if (i == a2.size()) {
                    EventLog.a("快应用", "在云控黑名单,直接拦截,不展示弹窗");
                    return true;
                }
                str2 = "没有匹配上足够的key";
            }
        }
        EventLog.a("快应用", str2);
        return false;
    }

    static ArrayList<String> b() {
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("122.11.38.205/fastapprouter");
        arrayList.add("thefatherofsalmon.com");
        arrayList.add("fastappjump-drcn.hispace.hicloud.com/fastapprouter");
        ArrayList<String> a2 = DomainListDataManager.a().a(g.CTRL_INDEX);
        if (a2 != null) {
            arrayList.addAll(a2);
        }
        return arrayList;
    }

    public static void b(String str, String str2, String str3) {
        StatManager.b().c("EDQA001_5");
    }

    public static void b(final String str, String str2, String str3, final View.OnClickListener onClickListener) {
        Activity a2 = ActivityHandler.b().a();
        if (a2 == null || a2.isFinishing()) {
            return;
        }
        final QBAlertDialog qBAlertDialog = new QBAlertDialog(a2, "始终拦截该网站打开快应用?", MttResources.l(R.string.nm), 2, MttResources.l(R.string.nl), 3, "", 0, QBAlertDialogBase.BackGroundStyle.WHITE_WITHOUT_HEADER, true, MttRequestBase.REQUEST_NORMAL, -1, null, false);
        qBAlertDialog.a(MttResources.l(R.string.nn), false);
        qBAlertDialog.a(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String str4;
                String str5;
                View.OnClickListener onClickListener2;
                EventCollector.getInstance().onViewClickedBefore(view);
                int id = view.getId();
                if (id != 100) {
                    if (id == 101) {
                        str5 = "用户取消了始终拦截,domain:" + str;
                    }
                    onClickListener2 = onClickListener;
                    if (onClickListener2 != null) {
                        onClickListener2.onClick(view);
                    }
                    qBAlertDialog.dismiss();
                    EventCollector.getInstance().onViewClicked(view);
                }
                String string = PublicSettingManager.a().getString("key_quick_app_user_block_list", "");
                if (TextUtils.isEmpty(string)) {
                    str4 = str;
                } else {
                    str4 = string + HiAnalyticsConstant.REPORT_VAL_SEPARATOR + str;
                }
                PublicSettingManager.a().setString("key_quick_app_user_block_list", str4);
                StatManager.b().c("EDQA001_3");
                str5 = "用户选择了始终拦截,blockList:" + str4;
                EventLog.a("快应用", str5);
                onClickListener2 = onClickListener;
                if (onClickListener2 != null) {
                }
                qBAlertDialog.dismiss();
                EventCollector.getInstance().onViewClicked(view);
            }
        });
        qBAlertDialog.show();
    }

    public static void b(final Thread thread, final String str, final String str2, final String str3, final int[] iArr) {
        Activity a2 = ActivityHandler.b().a();
        if (a2 == null || a2.isFinishing()) {
            return;
        }
        QBAlertDialog qBAlertDialog = f47184b;
        if (qBAlertDialog != null || (qBAlertDialog != null && qBAlertDialog.isShowing())) {
            EventLog.a("快应用", "已经有弹窗出现,不再重复弹窗!");
            return;
        }
        f47184b = new QBAlertDialog(a2, "允许网页打开快应用?", "取消", 1, "允许打开", 3, "", 0, QBAlertDialogBase.BackGroundStyle.WHITE_WITHOUT_HEADER, true, MttRequestBase.REQUEST_NORMAL, -1, null, false);
        Context appContext = ContextHolder.getAppContext();
        QBImageView qBImageView = new QBImageView(appContext);
        qBImageView.setImageNormalIds(R.drawable.bai);
        qBImageView.setUseMaskForNightMode(true);
        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(MttResources.s(20), MttResources.s(20));
        layoutParams.gravity = 16;
        qBImageView.setLayoutParams(layoutParams);
        QBTextView qBTextView = new QBTextView(appContext);
        qBTextView.setText(MttResources.l(R.string.nm));
        qBTextView.setTextSize(MttResources.h(f.cQ));
        qBTextView.setTextColor(MttResources.d(e.f85873b));
        qBTextView.setIncludeFontPadding(false);
        qBTextView.setGravity(17);
        LinearLayout.LayoutParams layoutParams2 = new LinearLayout.LayoutParams(-2, MttResources.s(30));
        layoutParams2.gravity = 16;
        qBTextView.setLayoutParams(layoutParams2);
        QBLinearLayout qBLinearLayout = new QBLinearLayout(appContext);
        qBLinearLayout.setLayoutParams(new LinearLayout.LayoutParams(-1, MttResources.s(30)));
        qBLinearLayout.setOrientation(0);
        qBLinearLayout.setGravity(17);
        qBLinearLayout.addView(qBTextView);
        qBLinearLayout.addView(qBImageView);
        qBLinearLayout.setId(R.id.quick_app_block_all_time);
        qBLinearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                EventCollector.getInstance().onViewClickedBefore(view);
                QuickAppUtil.b(str, str2, str3, new View.OnClickListener() {
                    @Override
                    public void onClick(View view2) {
                        EventCollector.getInstance().onViewClickedBefore(view2);
                        if (view2.getId() == 100) {
                            QuickAppUtil.f47184b.dismiss();
                        }
                        EventCollector.getInstance().onViewClicked(view2);
                    }
                });
                EventCollector.getInstance().onViewClicked(view);
            }
        });
        f47184b.h(true);
        f47184b.b(qBLinearLayout);
        f47184b.a(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                EventCollector.getInstance().onViewClickedBefore(view);
                int id = view.getId();
                if (id == 100) {
                    QuickAppUtil.b(str2, str, str3);
                    iArr[0] = 2;
                } else if (id == 101) {
                    StatManager.b().c("EDQA001_4");
                    iArr[0] = 1;
                }
                EventCollector.getInstance().onViewClicked(view);
            }
        });
        f47184b.setOnDismissListener(new DialogInterface.OnDismissListener() {
            @Override
            public void onDismiss(DialogInterface dialogInterface) {
                LockSupport.unpark(thread);
                if (iArr[0] == 0) {
                    QuickAppUtil.b(str2, str, str3);
                }
                long unused = QuickAppUtil.f47185c = System.currentTimeMillis();
                QBAlertDialog unused2 = QuickAppUtil.f47184b = null;
            }
        });
        f47184b.show();
    }

    public static void c() {
        if (WebEngine.e().g()) {
            d();
        } else {
            WebEngine.e().a(new WebEngine.WebCoreStateObserver() {
                @Override
                public void onWebCorePrepared() {
                    QuickAppUtil.d();
                    WebEngine.e().b(this);
                }
            });
        }
    }

    static void d() {
        Bundle bundle = new Bundle();
        bundle.putStringArrayList("rules", b());
        EventLog.a("快应用", "setX5CoreQuickRule result:" + QbSdk.invokeX5CoreStaticMiscMethod(MiscMethodNames.MISC_METHOD_SET_REDIRECT_REQUIRES_LOADER_RESTART_RULES, bundle));
    }

    private static void f() {
        if (f47183a == null) {
            f47183a = DomainListDataManager.a().a(413);
            if (f47183a == null) {
                f47183a = new ArrayList();
            }
        }
    }

    private static void g() {
        QuickAppBlackBean quickAppBlackBean;
        JSONArray jSONArray;
        JSONArray jSONArray2;
        ArrayList<String> a2 = DomainListDataManager.a().a(420);
        if (e == null) {
            e = new ArrayList();
            for (String str : a2) {
                try {
                    quickAppBlackBean = new QuickAppBlackBean();
                    JSONObject jSONObject = new JSONObject(str);
                    quickAppBlackBean.a(jSONObject.getString("site"));
                    jSONArray = jSONObject.getJSONArray("keyList");
                    jSONArray2 = jSONObject.getJSONArray("valueList");
                } catch (Exception unused) {
                }
                if (jSONArray.length() != jSONArray2.length()) {
                    return;
                }
                for (int i = 0; i < jSONArray.length(); i++) {
                    quickAppBlackBean.b(jSONArray.getString(i));
                    quickAppBlackBean.c(jSONArray2.getString(i));
                }
                e.add(quickAppBlackBean);
            }
        }
    }

    public static QuickAppUtil getInstance() {
        return SingletonInstance.f47209a;
    }

    @Override
    public WebResourceResponse isInterceptQuickAoo(QBWebView qBWebView, String str) {
        if (qBWebView == null || TextUtils.isEmpty(str) || f47186d) {
            return null;
        }
        if (DeviceUtils.n() && Build.VERSION.SDK_INT < 26) {
            return null;
        }
        if (f == null) {
            f = b();
        }
        Iterator<String> it = f.iterator();
        while (it.hasNext()) {
            if (str.contains(it.next())) {
                return a(qBWebView, str);
            }
        }
        return null;
    }
}