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);
}
}
}