mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-06-04 08:59:32 +02:00
102 lines
3.2 KiB
Java
102 lines
3.2 KiB
Java
package com.topjohnwu.magisk;
|
|
|
|
import android.app.Activity;
|
|
import android.app.Application;
|
|
import android.content.Context;
|
|
import android.content.SharedPreferences;
|
|
import android.content.res.Configuration;
|
|
import android.os.AsyncTask;
|
|
import android.os.Build;
|
|
import android.os.Bundle;
|
|
import android.preference.PreferenceManager;
|
|
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
import androidx.appcompat.app.AppCompatDelegate;
|
|
|
|
import com.topjohnwu.magisk.components.BaseActivity;
|
|
import com.topjohnwu.magisk.database.MagiskDB;
|
|
import com.topjohnwu.magisk.database.RepoDatabaseHelper;
|
|
import com.topjohnwu.magisk.utils.LocaleManager;
|
|
import com.topjohnwu.magisk.utils.RootUtils;
|
|
import com.topjohnwu.net.Networking;
|
|
import com.topjohnwu.superuser.Shell;
|
|
|
|
import java.util.concurrent.ThreadPoolExecutor;
|
|
|
|
public class App extends Application implements Application.ActivityLifecycleCallbacks {
|
|
|
|
public static App self;
|
|
public static Context deContext;
|
|
public static ThreadPoolExecutor THREAD_POOL;
|
|
|
|
// Global resources
|
|
public SharedPreferences prefs;
|
|
public MagiskDB mDB;
|
|
public RepoDatabaseHelper repoDB;
|
|
private volatile BaseActivity foreground;
|
|
|
|
static {
|
|
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
|
|
Shell.Config.setFlags(Shell.FLAG_MOUNT_MASTER | Shell.FLAG_USE_MAGISK_BUSYBOX);
|
|
Shell.Config.verboseLogging(BuildConfig.DEBUG);
|
|
Shell.Config.addInitializers(RootUtils.class);
|
|
Shell.Config.setTimeout(2);
|
|
THREAD_POOL = (ThreadPoolExecutor) AsyncTask.THREAD_POOL_EXECUTOR;
|
|
}
|
|
|
|
@Override
|
|
protected void attachBaseContext(Context base) {
|
|
super.attachBaseContext(base);
|
|
self = this;
|
|
deContext = base;
|
|
registerActivityLifecycleCallbacks(this);
|
|
|
|
if (Build.VERSION.SDK_INT >= 24) {
|
|
deContext = base.createDeviceProtectedStorageContext();
|
|
deContext.moveSharedPreferencesFrom(base,
|
|
PreferenceManager.getDefaultSharedPreferencesName(base));
|
|
}
|
|
prefs = PreferenceManager.getDefaultSharedPreferences(deContext);
|
|
mDB = new MagiskDB(base);
|
|
|
|
Networking.init(base);
|
|
LocaleManager.setLocale(this);
|
|
}
|
|
|
|
@Override
|
|
public void onConfigurationChanged(@NonNull Configuration newConfig) {
|
|
super.onConfigurationChanged(newConfig);
|
|
LocaleManager.setLocale(this);
|
|
}
|
|
|
|
public static BaseActivity foreground() {
|
|
return self.foreground;
|
|
}
|
|
|
|
@Override
|
|
public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle bundle) {}
|
|
|
|
@Override
|
|
public void onActivityStarted(@NonNull Activity activity) {}
|
|
|
|
@Override
|
|
public synchronized void onActivityResumed(@NonNull Activity activity) {
|
|
foreground = (BaseActivity) activity;
|
|
}
|
|
|
|
@Override
|
|
public synchronized void onActivityPaused(@NonNull Activity activity) {
|
|
foreground = null;
|
|
}
|
|
|
|
@Override
|
|
public void onActivityStopped(@NonNull Activity activity) {}
|
|
|
|
@Override
|
|
public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle bundle) {}
|
|
|
|
@Override
|
|
public void onActivityDestroyed(@NonNull Activity activity) {}
|
|
}
|