X8Application.java 源代码


package com.x8zs.app;

import android.app.Activity;
import android.app.ActivityManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Build;
import android.util.Log;
import android.view.View;
import androidx.multidex.MultiDexApplication;
import com.blankj.utilcode.util.NetworkUtils;
import com.blankj.utilcode.util.j;
import com.x8zs.ad.AdManagerEx;
import com.x8zs.apkbuilder.ApkBuilder;
import com.x8zs.ds2.R;
import com.x8zs.model.ScheduleService;
import com.x8zs.model.X8DataModel;
import com.x8zs.sandbox.ad.AdManager;
import com.x8zs.sandbox.ad.AdProxyActivity;
import com.x8zs.ui.InstallOrInjectFlowActivity;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import m2.h;

public class X8Application extends MultiDexApplication {
    public static final int REQUEST_CODE_PERMISSION = 100;
    private static final String TAG = "X8Application";
    private static X8Application sApp;
    private static boolean sMainProcessInited;
    private Object mDefaultActivityManager;
    private List<Activity> mActivityStack = new ArrayList();
    private BroadcastReceiver mTaskCompletedReceiver = new d();
    private com.x8zs.app.b mActivityCallbacks = new e();
    private BroadcastReceiver mNetworkChangeListener = new f();

    public class a implements View.OnClickListener {

        final com.x8zs.widget.a f21530q;

        a(com.x8zs.widget.a aVar) {
            this.f21530q = aVar;
        }

        @Override
        public void onClick(View view) {
            this.f21530q.dismiss();
        }
    }

    public class b implements View.OnClickListener {

        final Activity f21532q;

        final com.x8zs.widget.a f21533r;

        b(Activity activity, com.x8zs.widget.a aVar) {
            this.f21532q = activity;
            this.f21533r = aVar;
        }

        @Override
        public void onClick(View view) {
            o2.f.f0(this.f21532q, 100);
            this.f21533r.dismiss();
        }
    }

    public class c implements View.OnClickListener {

        final Activity f21535q;

        final com.x8zs.widget.a f21536r;

        c(Activity activity, com.x8zs.widget.a aVar) {
            this.f21535q = activity;
            this.f21536r = aVar;
        }

        @Override
        public void onClick(View view) {
            o2.f.h0(this.f21535q, 0);
            this.f21536r.dismiss();
        }
    }

    class d extends BroadcastReceiver {
        d() {
        }

        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent == null) {
                return;
            }
            String action = intent.getAction();
            if ("com.x8zs.download_completed".equals(action)) {
                if (X8Application.this.mActivityStack.size() == 0) {
                    Log.d(X8Application.TAG, "[download_completed] we are not front, ignore");
                    return;
                }
                Activity activity = (Activity) X8Application.this.mActivityStack.get(0);
                if (!activity.getComponentName().getClassName().startsWith("com.x8zs")) {
                    Log.d(X8Application.TAG, "[download_completed] we are not front, ignore");
                    return;
                }
                if (AdManager.getInstance().isAdShowing()) {
                    Log.d(X8Application.TAG, "[download_completed] ad is showing, ignore");
                    return;
                }
                Intent intent2 = new Intent(context, (Class<?>) InstallOrInjectFlowActivity.class);
                intent2.putExtra("task_id", intent.getIntExtra("task_id", 0));
                intent2.putExtra("action", 3);
                activity.startActivity(intent2);
                return;
            }
            if ("com.x8zs.inject_completed".equals(action)) {
                if (X8Application.this.mActivityStack.size() == 0) {
                    Log.d(X8Application.TAG, "[inject_completed] we are not front, ignore");
                    return;
                }
                Activity activity2 = (Activity) X8Application.this.mActivityStack.get(0);
                if (!activity2.getComponentName().getClassName().startsWith("com.x8zs")) {
                    Log.d(X8Application.TAG, "[inject_completed] we are not front, ignore");
                    return;
                }
                if (AdManager.getInstance().isAdShowing()) {
                    Log.d(X8Application.TAG, "[inject_completed] ad is showing, ignore");
                    return;
                }
                Intent intent3 = new Intent(context, (Class<?>) InstallOrInjectFlowActivity.class);
                intent3.putExtra("task_id", intent.getIntExtra("task_id", 0));
                intent3.putExtra("action", 1);
                activity2.startActivity(intent3);
                return;
            }
            if ("com.x8zs.inject_error".equals(action)) {
                if (X8Application.this.mActivityStack.size() == 0) {
                    Log.d(X8Application.TAG, "[inject_error] we are not front, ignore");
                    return;
                }
                Activity activity3 = (Activity) X8Application.this.mActivityStack.get(0);
                if (!activity3.getComponentName().getClassName().startsWith("com.x8zs")) {
                    Log.d(X8Application.TAG, "[inject_error] we are not front, ignore");
                    return;
                }
                int intExtra = intent.getIntExtra("error", 0);
                if (intExtra == 7) {
                    X8Application.this.showPermissionDlg(activity3);
                    return;
                } else {
                    if (intExtra == 8) {
                        X8Application.this.showNoStorageDlg(activity3);
                        return;
                    }
                    return;
                }
            }
            if ("com.x8zs.download_error".equals(action)) {
                if (X8Application.this.mActivityStack.size() == 0) {
                    Log.d(X8Application.TAG, "[download_error] we are not front, ignore");
                    return;
                }
                Activity activity4 = (Activity) X8Application.this.mActivityStack.get(0);
                if (!activity4.getComponentName().getClassName().startsWith("com.x8zs")) {
                    Log.d(X8Application.TAG, "[download_error] we are not front, ignore");
                    return;
                }
                int intExtra2 = intent.getIntExtra("error", 0);
                if (intExtra2 == 7) {
                    X8Application.this.showPermissionDlg(activity4);
                } else if (intExtra2 == 8) {
                    X8Application.this.showNoStorageDlg(activity4);
                }
            }
        }
    }

    class e extends com.x8zs.app.b {
        e() {
        }

        @Override
        public void onActivityStarted(Activity activity) {
            if (!X8Application.this.mActivityStack.contains(activity)) {
                X8Application.this.mActivityStack.add(activity);
                Log.d(X8Application.TAG, "[onActivityStarted] " + activity);
                return;
            }
            Log.e(X8Application.TAG, "[onActivityStarted] wtf " + activity);
        }

        @Override
        public void onActivityStopped(Activity activity) {
            if (X8Application.this.mActivityStack.remove(activity)) {
                Log.d(X8Application.TAG, "[onActivityStopped] " + activity);
                return;
            }
            Log.e(X8Application.TAG, "[onActivityStopped] wtf " + activity);
        }
    }

    class f extends BroadcastReceiver {
        f() {
        }

        @Override
        public void onReceive(Context context, Intent intent) {
            Activity activity;
            try {
                if (NetworkUtils.c()) {
                    Log.d(X8Application.TAG, "network connected");
                    if (X8Application.this.mActivityStack.size() > 0) {
                        activity = (Activity) X8Application.this.mActivityStack.get(X8Application.this.mActivityStack.size() - 1);
                    } else {
                        activity = null;
                    }
                    if (h.c().e() && activity != null) {
                        Log.d(X8Application.TAG, "checkUpdate");
                        h.c().b(activity);
                        return;
                    }
                    return;
                }
                Log.d(X8Application.TAG, "network disconnected");
            } catch (Throwable th) {
                th.printStackTrace();
            }
        }
    }

    private void closeAllUI() {
        if (Build.VERSION.SDK_INT < 23) {
            return;
        }
        try {
            List<ActivityManager.AppTask> appTasks = ((ActivityManager) getSystemService("activity")).getAppTasks();
            if (appTasks == null) {
                return;
            }
            Iterator<ActivityManager.AppTask> it = appTasks.iterator();
            while (it.hasNext()) {
                it.next().finishAndRemoveTask();
            }
        } catch (Throwable th) {
            th.printStackTrace();
        }
    }

    public static X8Application getInstance() {
        return sApp;
    }

    private void monitorNetwork() {
        try {
            IntentFilter intentFilter = new IntentFilter();
            intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
            intentFilter.addAction("android.net.wifi.WIFI_STATE_CHANGED");
            intentFilter.addAction("android.net.wifi.STATE_CHANGE");
            registerReceiver(this.mNetworkChangeListener, intentFilter);
        } catch (Throwable th) {
            th.printStackTrace();
        }
    }

    private void registerTaskCompletedReceiver() {
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("com.x8zs.download_completed");
        intentFilter.addAction("com.x8zs.inject_completed");
        intentFilter.addAction("com.x8zs.inject_error");
        intentFilter.addAction("com.x8zs.download_error");
        intentFilter.addAction("com.x8zs.inject_start");
        registerReceiver(this.mTaskCompletedReceiver, intentFilter);
    }

    private void saveDefaultIActivityManager() {
        this.mDefaultActivityManager = getIActivityManager();
    }

    public void showNoStorageDlg(Activity activity) {
        try {
            com.x8zs.widget.a aVar = new com.x8zs.widget.a(this);
            aVar.setTitle(R.string.dialog_title_no_storage2);
            aVar.e(R.string.dialog_msg_no_storage2);
            aVar.c(R.string.dialog_button_clean, new c(activity, aVar));
            aVar.setCanceledOnTouchOutside(false);
            aVar.show();
        } catch (Throwable unused) {
        }
    }

    public void showPermissionDlg(Activity activity) {
        try {
            com.x8zs.widget.a aVar = new com.x8zs.widget.a(activity);
            aVar.setTitle(R.string.dialog_title_permission);
            aVar.e(R.string.dialog_msg_permission);
            aVar.c(R.string.dialog_button_cancel, new a(aVar));
            aVar.g(R.string.dialog_button_permission, new b(activity, aVar));
            aVar.setCanceledOnTouchOutside(false);
            aVar.show();
        } catch (Throwable unused) {
        }
    }

    public Object getDefaultActivityManager() {
        return this.mDefaultActivityManager;
    }

    public Object getIActivityManager() {
        Field declaredField;
        try {
            if (Build.VERSION.SDK_INT < 26) {
                declaredField = Class.forName("android.app.ActivityManagerNative").getDeclaredField("gDefault");
            } else {
                declaredField = Class.forName("android.app.ActivityManager").getDeclaredField("IActivityManagerSingleton");
            }
            declaredField.setAccessible(true);
            Object obj = declaredField.get(null);
            Field declaredField2 = Class.forName("android.util.Singleton").getDeclaredField("mInstance");
            declaredField2.setAccessible(true);
            return declaredField2.get(obj);
        } catch (Throwable th) {
            th.printStackTrace();
            return null;
        }
    }

    @Override
    public void onCreate() {
        super.onCreate();
        if (sApp != null) {
            return;
        }
        sApp = this;
        if (!j.a() || sMainProcessInited) {
            return;
        }
        sMainProcessInited = true;
        com.x8zs.app.c.d(this);
        HashMap hashMap = new HashMap();
        hashMap.put("update", Boolean.toString(o2.f.W(this)));
        com.x8zs.app.c.b().h("app_init", hashMap);
        try {
            o2.f.o();
            com.x8zs.model.b.h(this);
            com.x8zs.model.b.b().i();
            com.x8zs.app.a.e(this);
            ApkBuilder.j(this);
            X8DataModel.A0(this).o1();
            registerTaskCompletedReceiver();
            registerActivityLifecycleCallbacks(this.mActivityCallbacks);
            ScheduleService.c(this);
            saveDefaultIActivityManager();
            AdManagerEx.init(this);
            h.d(this);
            monitorNetwork();
        } catch (Throwable th) {
            th.printStackTrace();
            com.x8zs.app.c.b().g("app_init_ex", "error", th.getClass().getSimpleName() + "|" + th.getMessage());
            closeAllUI();
        }
    }

    public void setIActivityManager(Object obj) {
        Field declaredField;
        try {
            if (Build.VERSION.SDK_INT < 26) {
                declaredField = Class.forName("android.app.ActivityManagerNative").getDeclaredField("gDefault");
            } else {
                declaredField = Class.forName("android.app.ActivityManager").getDeclaredField("IActivityManagerSingleton");
            }
            declaredField.setAccessible(true);
            Object obj2 = declaredField.get(null);
            Field declaredField2 = Class.forName("android.util.Singleton").getDeclaredField("mInstance");
            declaredField2.setAccessible(true);
            declaredField2.set(obj2, obj);
        } catch (Throwable th) {
            th.printStackTrace();
        }
    }

    @Override
    public void startActivity(Intent intent) {
        Activity activity;
        if (this.mActivityStack.size() > 0) {
            activity = this.mActivityStack.get(r0.size() - 1);
        } else {
            activity = null;
        }
        if (activity instanceof AdProxyActivity) {
            activity.startActivity(intent);
        } else {
            super.startActivity(intent);
        }
    }
}